C語(yǔ)言中二維數(shù)組作為函數(shù)參數(shù)來(lái)傳遞的三種方法
c語(yǔ)言中經(jīng)常需要通過(guò)函數(shù)傳遞二維數(shù)組,有三種方法可以實(shí)現(xiàn),如下:
方法一, 形參給出第二維的長(zhǎng)度。
例如:
#include <stdio.h> void func(int n, char str[ ][5] ) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]); } void main() { char* p[3]; char str[][5] = {"abc","def","ghi"}; func(3, str); }
方法二,形參聲明為指向數(shù)組的指針。
例如:
#include <stdio.h> void func(int n, char (*str)[5] ) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]); } void main() { char* p[3]; char str[][5] = {"abc","def","ghi"}; func(3, str); }
方法三,形參聲明為指針的指針。
例如:
#include <stdio.h> void func(int n, char **str) { int i; for(i = 0; i < n; i++) printf("/nstr[%d] = %s/n", i, str[i]); } void main() { char* p[3]; char str[][5] = {"abc","def","ghi"}; p[0] = &str[0][0]; p[1] = str[1]; p[2] = str[2]; func(3, p); }
附加,第三種傳參方式說(shuō)明:在函數(shù)中使用傳參過(guò)來(lái)的二維數(shù)組(指針)進(jìn)行數(shù)組取值的時(shí)候不能使用(array[i][j]
)這種形式來(lái)取值。應(yīng)該將二維數(shù)組看成一個(gè)一維數(shù)組,使用array[i * j + j]
這種形式來(lái)進(jìn)行取值。
個(gè)人理解:這是因?yàn)樵趥鲄⒌臅r(shí)候,我們將array[][]
數(shù)組當(dāng)成二級(jí)指針來(lái)進(jìn)行傳遞,所以我認(rèn)為他是將數(shù)組的屬性退化成了二級(jí)指針的屬性,因此這里并不能使用array[i][j]
這種方式來(lái)進(jìn)行數(shù)組取值。輸出格式如下
int tag = 0;//tag標(biāo)記,在方法中輸出二維數(shù)組時(shí)所需要的標(biāo)記 printf("使用傳遞過(guò)來(lái)的二維數(shù)組參數(shù)輸出二維數(shù)組\n"); for(i = 0; i < rows*columns; i++) { printf("%d,", array[i]); if(tag == columns-1) { tag = 0; printf("\n"); } else { tag++; } }
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)腳本之家的支持。
- 深入剖析Android中init進(jìn)程實(shí)現(xiàn)的C語(yǔ)言源碼
- 詳解C語(yǔ)言用malloc函數(shù)申請(qǐng)二維動(dòng)態(tài)數(shù)組的實(shí)例
- C語(yǔ)言 module_init函數(shù)與initcall案例詳解
- C語(yǔ)言函數(shù)傳遞數(shù)組和傳遞地址的區(qū)別你知道嗎
- VS2017開(kāi)發(fā)C語(yǔ)言出現(xiàn)“no_init_all“的解決辦法
- C語(yǔ)言的數(shù)組指針與函數(shù)指針詳解
- C語(yǔ)言全方位講解指針與地址和數(shù)組函數(shù)堆空間的關(guān)系
- C語(yǔ)言創(chuàng)建數(shù)組實(shí)現(xiàn)函數(shù)init,empty,reverse
相關(guān)文章
用C編寫(xiě)一個(gè)送給女朋友的情人節(jié)小程序 可愛(ài)!
非??蓯?ài)的情人節(jié)小程序!文章為大家分享了用C編寫(xiě)一個(gè)送給女朋友的小程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02C++字符串拼接效率對(duì)比(+=、append、stringstream、sprintf)
這篇文章主要介紹了C++字符串拼接效率對(duì)比(+=、append、stringstream、sprintf),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-08-08C++實(shí)現(xiàn)String類實(shí)例代碼
這篇文章主要介紹了C++實(shí)現(xiàn)String類實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-04-04