Find centralized, trusted content and collaborate around the technologies you use most.
Teams
Q&A for work
Connect and share knowledge within a single location that is structured and easy to search.
int a[] = {1,2,3,4}; printf("%d",sizeof(a)/sizeof(a+1));
输出:4
谁能解释一下?
这是错的。 sizeof(a)是数组sizeof(a+1)的大小, 是指针的大小。把两者分开是没有意义的。
sizeof(a)
sizeof(a+1)
作者的意图大概是:
sizeof a / sizeof a[0]
这将产生数组中元素的数量。 sizeof a[0]是 的大小int。
sizeof a[0]
int
你的代码给你正确答案的原因是你的机器恰好有sizeof(int) == sizeof(int *).
sizeof(int) == sizeof(int *)
旁白:%zu用于打印size_t.
%zu
size_t