c++的指针应用

来源:百度知道 编辑:UC知道 时间:2024/05/13 01:34:52
double x[4][7];
double **p=x;
这样定义是错的,但强制转换后就可以了。
double *x[7];
double **p=x;
这样定义是正确的,但强制转后结果就不一样
请问这2两个为什么一个可以用**而一个不能用**,还有一个强制转换后结果正确,一个强制换后结果就不一样了

首先说明,编译器能决定二维数组中的第一维的大小。原因是如果给定12个元素,编译器并不知道是三行四列还是二行六列,或者是别的情况。你的第一个例子就是没给出第二维的大小,故往后就不能初始化了,所以出错。相反,第二个例子对了。另外强制转换都可以的-->double **p=(double**)x;

期待高手的讲解~~