C++ 指针数组的指针

来源:百度知道 编辑:UC知道 时间:2024/07/01 23:18:06
char *f[4]={"a","b","c","d"};
char **n=&f;//是错误的为什么
char **n=f; //这样是可以的
为什么还有 char **n[4]=f //这样为什么不可以

char *f[4];这个定义说明f是一个数组,数组里面存放的是char型指针。其实这里的f相当于二维数组。第二个char **n的n是指向指针的指针,它也可以当做二维数组来用。所以char **n=f是可以的。char **n[4]这里n也是一个数组,它里面存放的是二维指针,它就相当于三维数组了,所以不能直接把f赋给它。
char *(*n)[4]=&f这是可以的。

n[4]中存储的是char**类型,而f[4]是char*类型的,差一个*,一个是另一个的更深一层的地址,这样理解就行。