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

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

在C中將多維數(shù)組作為函數(shù)參數(shù)傳遞

在C中將多維數(shù)組作為函數(shù)參數(shù)傳遞

C
慕慕森 2019-08-12 18:42:18
在C中將多維數(shù)組作為函數(shù)參數(shù)傳遞在C中,當我不知道數(shù)組的維數(shù)是什么時,我可以將多維數(shù)組作為單個參數(shù)傳遞給函數(shù)嗎?另外,我的多維數(shù)組可能包含除字符串以外的類型。
查看完整描述

3 回答

?
叮當貓咪

TA貢獻1776條經(jīng)驗 獲得超12個贊

將顯式指針傳遞給第一個元素,并將數(shù)組維度作為單獨的參數(shù)。例如,要處理int的任意大小的2-d數(shù)組:

void func_2d(int *p, size_t M, size_t N){
  size_t i, j;
  ...
  p[i*N+j] = ...;}

這將被稱為

...int arr1[10][20];int arr2[5][80];...func_2d(&arr1[0][0], 10, 20);func_2d(&arr2[0][0], 5, 80);

同樣的原則適用于高維數(shù)組:

func_3d(int *p, size_t X, size_t Y, size_t Z){
  size_t i, j, k;
  ...
  p[i*Y*Z+j*Z+k] = ...;
  ...}...arr2[10][20][30];...func_3d(&arr[0][0][0], 10, 20, 30);


查看完整回答
反對 回復(fù) 2019-08-12
?
心有法竹

TA貢獻1866條經(jīng)驗 獲得超5個贊

您可以將您的函數(shù)聲明為:

f(int size, int data[][size]) {...}

然后編譯器將為您執(zhí)行所有指針運算。

請注意,尺寸大小必須出現(xiàn)數(shù)組本身之前

GNU C允許參數(shù)聲明轉(zhuǎn)發(fā)(如果你真的需要在數(shù)組后傳遞維度):

f(int size; int data[][size], int size) {...}

第一個維度雖然也可以作為參數(shù)傳遞,但對于C編譯器來說是無用的(即使對于sizeof運算符,當應(yīng)用于數(shù)組傳遞時,因為參數(shù)將始終視為指向第一個元素的指針)。


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

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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