繁体   English   中英

c中的数组衰减是什么以及何时发生?

[英]what is array decay in c and when it happen?

我目前正在学习C语言。 我想知道“阵列衰减”的含义是什么,何时发生。

我想知道下面的两个变量是否以相同的方式解释。


char(*zippo)[2] = NULL;
char zippo2[4][2];

zippo = (char(*)[2])malloc(sizeof(char[2]) * 4);


来自C标准(6.3.2.1左值,数组和函数指示符)

3除非它是sizeof运算符或一元&运算符的操作数,或者是用于初始化数组的字符串文字,否则类型为“ array of type”的表达式将转换为类型为“ pointer”的表达式键入'',它指向数组对象的初始元素,不是左值。 如果数组对象具有寄存器存储类,则该行为是不确定的。

下面的两个变量

char(*zippo)[2] = NULL;
char zippo2[4][2];

有不同的类型。 第一个是指向char[2]类型的对象的指针。 第二个是带有四个类型为char[2]元素的二维数组。

当表达式中使用数组zippo2除外(在引号中列出的表达式除外)(例如,将其与sizeof运算符配合使用),则其指示符将隐式转换为指向其第一个元素的指针,并且具有与变量zippo相同的类型。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM