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

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何正確地設(shè)置、訪問和釋放C中的多維數(shù)組?

如何正確地設(shè)置、訪問和釋放C中的多維數(shù)組?

C
慕姐8265434 2019-06-10 20:25:24
如何正確地設(shè)置、訪問和釋放C中的多維數(shù)組?我在C中看到了許多關(guān)于多維數(shù)組的“我的代碼出了什么問題”的問題。出于某種原因,人們似乎無法理解這里發(fā)生的事情,所以我決定回答這個問題,作為對其他人的引用:如何正確地設(shè)置、訪問和釋放C中的多維數(shù)組?如果其他人有用的建議,請隨心所欲地張貼!
查看完整描述

3 回答

?
慕哥6287543

TA貢獻(xiàn)1831條經(jīng)驗(yàn) 獲得超10個贊

在C中,自C99以來,即使是動態(tài)多維數(shù)組也可以很容易地一次分配malloc被釋放free:

double (*A)[n] = malloc(sizeof(double[n][n]));for (size_t i = 0; i < n; ++i)
  for (size_t j = 0; j < n; ++j)
      A[i][j] = someinvolvedfunction(i, j);free(A);


查看完整回答
反對 回復(fù) 2019-06-10
?
12345678_0001

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

在C89中,至少有四種不同的方法來創(chuàng)建或模擬多維數(shù)組。

一個是“分開分配每一行”,邁克在他的回答中描述了這一點(diǎn)。它是多維數(shù)組,它只是模仿一個數(shù)組(特別是模仿訪問元素的語法)。在每一行都有不同大小的情況下,它可能很有用,因此您不是表示矩陣,而是表示具有“粗糙邊緣”的東西。

一個是“分配多維數(shù)組”??雌饋硎沁@樣的:

int (*rows)[NUM_ROWS][NUM_COLS] = malloc(sizeof *rows);...free(rows);

那么訪問元素[i,j]的語法是(*rows)[i][j]..在C89中,兩者都是NUM_COLSNUM_ROWS必須在編譯時知道。這是一個真正的二維數(shù)組rows是指向它的指針。

一個是“分配一個行數(shù)組”。看起來是這樣的:

int (*rows)[NUM_COLS] = malloc(sizeof(*rows) * NUM_ROWS);...free(rows);

那么訪問元素[i,j]的語法是rows[i][j]..在C 89中,NUM_COLS必須在編譯時知道。這是一個真正的二維數(shù)組.

一種是,“分配一個一維數(shù)組并假裝”??雌饋硎沁@樣的:

int *matrix = malloc(sizeof(int) * NUM_COLS * NUM_ROWS);...free(matrix);

那么訪問元素[i,j]的語法是matrix[NUM_COLS * i + j]..這個(當(dāng)然)不是一個真正的二維數(shù)組.實(shí)際上,它的布局與一個相同。


查看完整回答
反對 回復(fù) 2019-06-10
  • 3 回答
  • 0 關(guān)注
  • 517 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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