读书人

指针指向指针的指针数组的行指针三

发布时间: 2012-11-10 10:48:51 作者: rapoo

指针,指向指针的指针,数组的行指针三者相互转化的问题
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][]; 一样
[解决办法]
探讨
好吧,我int (*pMap3)[3] = map这样定义后。果然printf可以输出片Map[2]。但是,输出的却是一个很诡异的负值?
请问这是为什么呢??

读书人网 >C语言

热点推荐