gpt4 book ai didi

c - #define ArrayLength(x) (sizeof(x)/sizeof(*(x))) 是什么意思?

转载 作者:太空狗 更新时间:2023-10-29 15:20:34 25 4
gpt4 key购买 nike

这行到底是什么意思?

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com