这行到底是什么意思?
define是什么很清楚,但是我不明白为什么要在分母处传递x的指针:
#define ArrayLength(x) (sizeof(x)/sizeof(*(x)))
谢谢
最佳答案
分母
sizeof(*(x))
是数组中第一个元素的长度,以字节为单位。变量x
是数组类型, decays 指向一个指针,指向数组的开始。星号 (*
) 是 dereference operator ,所以 *(x)
表示 “x
指向的数据”。
分子
sizeof(x)
将 sizeof
运算符应用于数组类型。这给出了以字节为单位的整个数组的长度。
宏也可以写成
#define ArrayLength(x) (sizeof(x)/sizeof(x[0]))
这可能更容易阅读。
关于c - #define ArrayLength(x) (sizeof(x)/sizeof(*(x))) 是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7331405/