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

mle*_*boy 1 c

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

输出:4

有谁能解释一下?

Car*_*rum 10

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

作者可能想要的是:

sizeof a / sizeof a[0]

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

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

旁白:%zu用于打印size_t.