相关疑难解决方法(0)

sizeof数组澄清

我正在C学习明天的最后一个,并对sizeof运算符有疑问.

假设a的大小int32位,而指针是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不是吗?编译器知道zip6元素,但没有关于zap可能有多大的线索.

c

8
推荐指数
1
解决办法
469
查看次数

标签 统计

c ×1