69,336
社区成员
发帖
与我相关
我的任务
分享
int _tmain(int argc, _TCHAR* argv[])
{
int (*b)[3];//定义数组指针,相当于定义一个二维数组,行数不确定但列数是三
b=(int (*)[3])malloc(sizeof(int *)*3);//为数组指针申请三行内存,相当于b[3][3]
for(int i=0;i<2;++i)
b[i][0]=234;//数组指针可以当做二维数组用,目前i<2不越界,但i<3好像就越界了,为什么?
for(int i=0;i<2;++i)
printf("%d\n",b[i][0]);
free(b);//释放内存出现了问题,求解答
return 0;
}
int (*b)[3];//定义数组指针,相当于定义一个二维数组,行数不确定但列数是三
这句的注释是对的。没问题。
b=(int (*)[3])malloc(sizeof(int *)*3);//为数组指针申请三行内存,相当于b[3][3]
这句的注释就有问题,不是申请了3行3列的空间。sizeof(int *)长度是sizeof(int)一样的。这儿只是申请了3 * sizeof(int)的空间。
b=(int (*)[3])malloc(sizeof(int)*3 * 3);/
这才是申请了了3行3列的空间;
int (*b)[3];//定义数组指针,相当于定义一个二维数组,行数不确定但列数是三
我觉得这句有问题,这是定义了一个指向一维数组的指针,不是定义二维数组,定义二维数组这个词一定是要确定二维数组的行号列号。