在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/C/ c語言中為什么多維數(shù)組指針 行不要緊 但列一定要聲明的時(shí)候就說好?

c語言中為什么多維數(shù)組指針 行不要緊 但列一定要聲明的時(shí)候就說好?

一個(gè)函數(shù)內(nèi)是這樣 函數(shù)間傳遞多維數(shù)組的頭地址的參數(shù)時(shí)也是這樣

回答
編輯回答
毀了心

先看一維數(shù)組的情況,比如:

int f1(int a[9]) {
   return a[7]; 
}

函數(shù)聲明中數(shù)組參數(shù)的長度9其實(shí)是沒用的(C不檢查越界)。編譯器實(shí)際完成的動(dòng)作是:

return int at address (a + sizeof(int) * 7);

也就是說編譯器需要的信息(起始地址、偏移量、返回類型)已經(jīng)完備了。9這個(gè)信息完全是多余的。

再來看二維數(shù)組:

int f2(int a[9][7]) {
    return a[2][4];
}

C將這個(gè)二維數(shù)組“壓縮”,看成是元素類型為int[7]的一維數(shù)組,因此第一維長度9仍然沒用:

return int at address (a + sizeof(int[7]) * 2 + sizeof(int) * 4);

但是第二維長度7或者后面更高維的長度就有用了,因?yàn)樗鼈児餐瑳Q定了“壓縮”后一維數(shù)組的元素的類型(長度)。

2018年6月13日 09:29
編輯回答
解夏

因?yàn)樾枰滥愕拿恳恍械降状娣诺氖鞘裁搭愋?/p>

2018年6月30日 11:16