64,648
社区成员
发帖
与我相关
我的任务
分享
char* a[]={"abc","cde","fgh"};//字符指针数组
char** b = a ;
cout<<*b<<""<<*(b+1)<<""<<*(b+2)<<endl;
char* a[]={"abc","cde","fgh"};//字符指针数组
char** b=a;
cout<<*b<<""<<*(b+1)<<""<<*(b+2)<<endl;
char* a[]={"abc","cde","fgh"};//字符指针数组
char** b = a ;
cout<<*b<<""<<*(b+1)<<""<<*(b+2)<<endl;
对于 char* a[] 这个表达式,我们首先要明确一点,a是数组类型,它里面的元素类型是 char *,
即字符指针类型。因此 char* a[]={"abc","cde","fgh"} 的意思是:创建三个C字符串临时对象,
分别是:"abc", "cde", "fgh",(注:这三个C字符串对象是由编译器自动创建的),然后让我
们数组a中的第一个字符指针a[0],指向第一个临时对象"abc";第二个字符指针a[1],指向第二个
临时对象"cde",第三个字符指针a[2],指向第三个临时对象"fgh"。
我们知道,数组a,例如 int a[], double a[],等,当我们直接应用数组的名字a时,数组名都直接
转化成指向数组第一个元素的指针,因此,对于 int a[], a表示指向数组第一个元素的指针,而
数组中的元素都是 int 型的,因此a的一个 int * 指针。同理, double a [], a表示指向double
类型的指针,即 double *。 因此类推,便可以知道 char* a[],a是指向 char* 类型的指针,即
a是 char** 类型的。
因此第二个语句是 char **b = a;