第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

對(duì)多維數(shù)組的一維訪問:它是明確定義的行為嗎?

對(duì)多維數(shù)組的一維訪問:它是明確定義的行為嗎?

C
郎朗坤 2019-08-19 17:13:10
對(duì)多維數(shù)組的一維訪問:它是明確定義的行為嗎?我想我們都同意,通過以一維方式解引用(可能是偏移的)指向其第一個(gè)元素的指針來訪問真正的多維數(shù)組被認(rèn)為是慣用的C,例如:void clearBottomRightElement(int *array, int M, int N){    array[M*N-1] = 0;  // Pretend the array is one-dimensional}int mtx[5][3];...clearBottomRightElement(&mtx[0][0], 5, 3);然而,我的語言律師需要說服這實(shí)際上是明確定義的C!特別是:是否標(biāo)準(zhǔn)保證編譯器不會(huì)把填充例如,在中間mtx[0][2]和mtx[1][0]?通常,索引關(guān)閉數(shù)組的末尾(除了結(jié)尾之外)是未定義的(C99,6.5.6 / 8)。所以以下內(nèi)容顯然是未定義的:struct {    int row[3];           // The object in question is an int[3]    int other[10];} foo;int *p = &foo.row[7];     // ERROR: A crude attempt to get &foo.other[4];因此,根據(jù)相同的規(guī)則,人們會(huì)期望以下內(nèi)容未定義:int mtx[5][3];int (*row)[3] = &mtx[0];  // The object in question is still an int[3]int *p = &(*row)[7];      // Why is this any better?那為什么要定義呢?int mtx[5][3];int *p = &(&mtx[0][0])[7];那么C標(biāo)準(zhǔn)的哪一部分明確允許這個(gè)?(為了討論,我們假設(shè)是c99。)請(qǐng)注意,我毫不懷疑這在所有編譯器中都能正常工作。我要查詢的是標(biāo)準(zhǔn)是否明確允許這樣做。
查看完整描述

3 回答

?
滄海一幻覺

TA貢獻(xiàn)1824條經(jīng)驗(yàn) 獲得超5個(gè)贊

您想要進(jìn)行訪問的唯一障礙是類型對(duì)象int [5][3]并且int [15]不允許彼此別名。因此,如果編譯器意識(shí)到類型的指針指向前者的int *一個(gè)int [3]數(shù)組,則它可能會(huì)施加數(shù)組邊界限制,從而阻止訪問該int [3]數(shù)組之外的任何內(nèi)容。

您可以通過將所有內(nèi)容放在包含int [5][3]數(shù)組和int [15]數(shù)組的聯(lián)合內(nèi)部來解決此問題,但是我真的不清楚聯(lián)合黑客是否會(huì)將人們用于類型懲罰實(shí)際上是明確定義的。這種情況可能稍微有點(diǎn)問題,因?yàn)槟悴粫?huì)打字單個(gè)單元格,只有數(shù)組邏輯,但我仍然不確定。

應(yīng)該注意的一個(gè)特殊情況是:如果您的類型是unsigned char(或任何char類型),那么將多維數(shù)組作為一維數(shù)組訪問將是非常明確的。這是因?yàn)?code>unsigned char與標(biāo)準(zhǔn)重疊的一維數(shù)組被標(biāo)準(zhǔn)明確定義為對(duì)象的“表示”,并且本質(zhì)上允許對(duì)其進(jìn)行別名。


查看完整回答
反對(duì) 回復(fù) 2019-08-19
  • 3 回答
  • 0 關(guān)注
  • 552 瀏覽

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)