【发布时间】:2020-05-23 20:16:19
【问题描述】:
在下面的代码中,如果我将 int (*p)[R][C]; 更改为 int p[R][C]; 结果从 800 更改为 80。为什么会发生这种情况,正如我在 int p[R][C]; 中理解的那样,数组名称 p 也是像 *p in@ 这样的指针987654326@
#include <stdio.h>
#define R 10
#define C 20
int main()
{
int (*p)[R][C];
printf("%d", sizeof(*p));
getchar();
return 0;
}
PS:- 是*p inint (*p)[R][C]; 充当指向另一个实际上指向数组的指针的指针吗?
【问题讨论】:
-
第一个创建指针数组而不是整数数组。
-
@johnelemans 第一个是指向多维整数数组而不是指针数组的指针!
-
printf("%d", sizeof(*p));是错误的。sizeof()返回size_t,size_t的正确格式说明符是%zu。
标签: c pointers multidimensional-array sizeof implicit-conversion