这条线究竟意味着什么?
很清楚定义是什么,但我不明白为什么在分母处传递x的指针:
#define ArrayLength(x) (sizeof(x)/sizeof(*(x)))
Run Code Online (Sandbox Code Playgroud)
谢谢
sizeof(*(x))
Run Code Online (Sandbox Code Playgroud)
是数组中第一个元素的长度,以字节为单位.变量x是一个数组类型,它衰减到指针,指向数组的开头.星号(*)是解除引用运算符,因此*(x)表示"指向的数据x".
sizeof(x)
Run Code Online (Sandbox Code Playgroud)
将sizeof运算符应用于数组类型.这给出了整个数组的长度,以字节为单位.
#define ArrayLength(x) (sizeof(x)/sizeof(x[0]))
Run Code Online (Sandbox Code Playgroud)
这可能更容易阅读.