为什么要使用;(阵列)和#x2B;计数“;在foreach宏中?

为什么要使用;(阵列)和#x2B;计数“;在foreach宏中?,c,macros,C,Macros,我从中获取每个宏 我不理解“(数组)+count”,它等于“&array[count]”,但为什么不使用“array[count]”而不是“(数组)+count”它们是等价的,您使用哪一个完全取决于程序员的语义风格 数组在传递给函数时会衰减为指针,确切地说,指针指向第一个数组元素。因此,您可以同时使用两者。在数组+计数和数组[计数]或计数+数组中没有区别 只是这两个地址都是,所以您不能像以前那样将它们分配给整数值: int item=array+count; 但对于整数指针: int* ite

我从中获取每个宏


我不理解“(数组)+count”,它等于“&array[count]”,但为什么不使用“array[count]”而不是“(数组)+count”

它们是等价的,您使用哪一个完全取决于程序员的语义风格


数组在传递给函数时会衰减为指针,确切地说,指针指向第一个数组元素。因此,您可以同时使用两者。

数组+计数
数组[计数]
计数+数组
中没有区别

只是这两个地址都是,所以您不能像以前那样将它们分配给整数值:

int item=array+count;
但对于整数指针:

int* item=array+count; or int* item= &array[count];
但是为什么不使用“array[count]”而不是“(array)+count”

在宏中,
项的类型为
int*
array[count]
的类型为
int

因此,您不能使用:

item = array[count];
但是你可以用

item = (array) + count;

既然
(array)+count
的计算结果是
int*

NMDV,那么为什么“数组在传递给函数时会衰减为指针”@chux my mission and thanxd您的意思是“为什么不使用
array[count]
(如写的)还是“为什么不使用
@array[count]
”(根据您对
(array)+count
等于什么的评论)?建议编辑/编译/运行这两种方式,看看是否有任何区别。您是对的,使用点更节省内存,但如果我将“int*v”更改为“int v”,将“(array)+count”更改为“array[count”,则更方便。@nwaicaethi,您可以这样做。
item = array[count];
item = (array) + count;