【发布时间】:2014-02-09 00:26:09
【问题描述】:
我在玩指针和数组,我想将一个指向 int 数组的指针(使用 malloc 分配)转换/转换为一个多维数组int.
我不知道为什么下面的 C 程序不会两次打印相同的数字。
...
str->val = malloc(16);
int (*m)[4][4] = str->val;
printf("The number is %d, yes the number is %d", str->val[4+1], (*m)[1][1]);
...
现在,第一个打印的数字是正确的,但第二个不是。我在 SO 上发现了与我类似的其他问题,但我无法解决我的问题。对于可能的重复,我深表歉意。
我还有一个问题:以下声明有什么区别?
int m[10];
int (*m)[10];
编辑:
我的问题是由我的 struct 的字段 val 的错误声明引起的:我将其声明为 char。
【问题讨论】:
-
malloc(16) 只会为 int array[0][4] 分配足够的内存。