以C sizeof(a)/ sizeof(a + 1)计算数组中元素的数量?

时间:2013-07-10 18:32:00

标签: c

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

输出:         4

任何人都能解释一下吗?

1 个答案:

答案 0 :(得分:10)

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

作者可能想要的是:

sizeof a / sizeof a[0]

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

您的代码为您提供正确答案的原因是您的机器恰好有sizeof(int) == sizeof(int *)

除此之外:使用%zu打印size_t