1
    int a[] = {1,2,3,4};
    printf("%d",sizeof(a)/sizeof(a+1));

输出:4

谁能解释一下?

4

1 回答 1

10

这是错的。 sizeof(a)是数组sizeof(a+1)的大小, 是指针的大小。把两者分开是没有意义的。

作者的意图大概是:

sizeof a / sizeof a[0]

这将产生数组中元素的数量。 sizeof a[0]是 的大小int

你的代码给你正确答案的原因是你的机器恰好有sizeof(int) == sizeof(int *).

旁白:%zu用于打印size_t.

于 2013-07-10T18:33:00.997 回答