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

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

如何在C中處理動態(tài)多維數(shù)組?

如何在C中處理動態(tài)多維數(shù)組?

C
紅顏莎娜 2019-06-28 17:28:27
如何在C中處理動態(tài)多維數(shù)組?有人知道我如何使用C來動態(tài)分配多維數(shù)組嗎?這有可能嗎?
查看完整描述

3 回答

?
狐的傳說

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

使用動態(tài)分配,使用malloc:

int** x;x = malloc(dimension1_max * sizeof(int*));for (int i = 0; i < dimension1_max; i++) {
  x[i] = malloc(dimension2_max * sizeof(int));}[...]for (int i = 0; i < dimension1_max; i++) {
  free(x[i]);}free(x);

這將分配一個大小為2D的數(shù)組。dimension1_max * dimension2_max..例如,如果您想要一個640*480數(shù)組(F.E。),使用dimension1_max = 640, dimension2_max=480。然后,可以使用x[d1][d2]哪里d1 = 0..639, d2 = 0..479.

但是搜索so或google也會發(fā)現(xiàn)其他可能性,例如在這個問題上

請注意,在這種情況下,您的數(shù)組不會分配一個連續(xù)的內(nèi)存區(qū)域(640*480字節(jié)),這可能會給假設(shè)這種情況的函數(shù)帶來問題。因此,要使數(shù)組滿足條件,請將上面的malloc塊替換為:

int** x;int* temp;x = malloc(dimension1_max * sizeof(int*));temp = malloc(dimension1_max * dimension2_max * sizeof(int));for (int i = 0; i < dimension1_max; i++) {
  x[i] = temp + (i * dimension2_max);}[...]free(temp);free(x);


查看完整回答
反對 回復(fù) 2019-06-28
?
慕神8447489

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

自C99以來,C具有動態(tài)邊界的二維陣列。如果您想避免在堆棧上分配這樣的猛獸(您應(yīng)該這樣做),您可以一次就可以輕松地分配它們,如下所示

double (*A)[n] = malloc(sizeof(double[n][n]));

僅此而已。然后,您可以很容易地使用它,就像用于2D數(shù)組一樣A[i][j]..別忘了最后那個

free(A);

蘭迪·邁爾斯寫了一系列文章解釋變長陣列(VLAS).


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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