我正在C学习明天的最后一个,并对sizeof运算符有疑问.
假设a的大小int
是32
位,而指针是64
位.
如果有功能:
int
foo (int zap[])
{
int a = sizeof(zap);
return a;
}
Run Code Online (Sandbox Code Playgroud)
因为zap
是一个指针,foo
会返回8
,因为这是存储这个特定指针所需的字节数.但是,使用以下代码:
int zip[] = { 0, 1, 2, 3, 4, 5 };
int i = sizeof(zip);
Run Code Online (Sandbox Code Playgroud)
i
将是6 * sizeof(int)
= 6 * 4
=24
为什么它sizeof(zip)
返回元素的数量乘以每个元素sizeof(zap)
的大小,而返回指针的大小?它的大小zap
是未指定的,zip
不是吗?编译器知道这zip
是6
元素,但没有关于zap
可能有多大的线索.
c ×1