c++指针数组初始化问题

char *p[]={"aaa","bbb"};
这样在定义p的时候完成了初始化
那int *p1[]={1,2}
为什么不可以?
如何在定义p1的时候进行初始化?
还是只能在定义后通过循环进行?

第1个回答  2009-01-17
int *p1[]={1,2}这样定义是有二义性的,所以不可以。对于char *p[]={"aaa","bbb"};是唯一的一个意思就表示char p[2][3];
而对于int *p1[]={1,2}而言,他存在了二义性,他既可以表示int p1[2][0],即p1[0][0]=1,p1[1][0]=2也可表示为int p1[n][2],即:p1[0][0]=1,p1[0][1]=2;
注:只要记住指针数组其实就相当于一个二维数组就好办了
第2个回答  2009-01-17
可以这样
int a=1,b=2;
int *p1[]={&a,&b};
理由就是1楼说的*p1是一个指针数值,所以它里面的内容必须都是指针
第3个回答  2009-01-17
char *p[]={"aaa","bbb"}; 这个是指针数组的初始化,下面的改成char*p1={1,2}就可以了。
相似回答