Kul*_*ngh 4 c pointers multidimensional-array
我只知道一个例子,当数组传递给一个函数时,它们会衰变成一个指针.任何人都可以详细说明数组衰减到指针的所有情况.
Eri*_*hil 14
C 2011 6.3.2.1 3:
除了当它是的操作数的sizeof操作者,...或一元和操作者,或是用于初始化一个数组,具有键入表达式文字串"的阵列类型 "被转换成的表达式,类型为"指针 键入 "它指向数组对象的初始元素,而不是左值.
换句话说,数组通常会衰减为指针.标准列出了他们不这样做的情况.
有人可能认为当你使用下标时,数组就像数组一样充当数组a[3]
.但是,这里发生的事实是:
a
转换为指针.a[3]
被评估为*((a)+(3))
.即,a
转换为指针,3添加到指针,并应用*****运算符.)注意:C 2011文本包含" _Alignof运算符".这在标准的C 2018版本中得到了纠正,我从上面的引用中删除了它.操作数_Alignof
总是一种类型; 你实际上不能将它应用于一个对象.因此,C 2011标准将其纳入6.3.2.1 3是错误的.