【发布时间】:2011-05-09 06:21:12
【问题描述】:
我正在学习 C 的期末考试,并且有一个关于 sizeof 运算符的问题。
假设int 的大小是32 位,而指针是64 位。
如果有函数:
int
foo (int zap[])
{
int a = sizeof(zap);
return a;
}
因为zap 是一个指针,所以foo 将返回8,因为这是存储这个特定指针所需的字节数。但是,使用以下代码:
int zip[] = { 0, 1, 2, 3, 4, 5 };
int i = sizeof(zip);
i 将是 6 * sizeof(int) = 6 * 4 = 24
为什么sizeof(zip) 返回元素的数量乘以每个元素的大小,而sizeof(zap) 返回指针的大小?是不是zap的大小是未指定的,而zip不是?编译器知道zip 是6 元素,但不知道zap 可能有多大。
【问题讨论】:
标签: c