[英]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.