簡體   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