为什么要使用;(阵列)和#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;