指针,指向指针的指针,数组的行指针三者相互转化的问题
void main()
{
int map[3][3]={{1,2,3},{4,5,6},{7,8,9}};
int **pMap=map;
int *pMap2=map;
int (*pMap3)[]=map;
printf("%d",pMap[4]);
printf("%d",pMap2[4]);
//printf("%d",pMap3[4]);
}
运行结果是55. 加上printf("%d",pMap3[4]);后程序报错。
为什么pMap可以被转化成与pMap2类型相同的指向整数的指针,而pMap3却不可以呢?
注:上述代码是在linux下运行的。如果用VS2010,则各指针都不能转化,都会报错。
[解决办法]
int (*pMap3)[]=map;
这里相当于是把map的赋值给了一个一维数组pMap3,但是map只有3个一维数组。
[解决办法]
- C/C++ code
int (*pMap3)[]=map;//道理和 定义: int a[3][]; 一样
[解决办法]