C語言中二維數(shù)組作為函數(shù)參數(shù)來傳遞的三種方法
c語言中經(jīng)常需要通過函數(shù)傳遞二維數(shù)組,有三種方法可以實(shí)現(xiàn),如下:
方法一, 形參給出第二維的長度。
例如:
#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);
}
附加,第三種傳參方式說明:在函數(shù)中使用傳參過來的二維數(shù)組(指針)進(jìn)行數(shù)組取值的時(shí)候不能使用(array[i][j] )這種形式來取值。應(yīng)該將二維數(shù)組看成一個(gè)一維數(shù)組,使用array[i * j + j]這種形式來進(jìn)行取值。
個(gè)人理解:這是因?yàn)樵趥鲄⒌臅r(shí)候,我們將array[][]數(shù)組當(dāng)成二級指針來進(jìn)行傳遞,所以我認(rèn)為他是將數(shù)組的屬性退化成了二級指針的屬性,因此這里并不能使用array[i][j]這種方式來進(jìn)行數(shù)組取值。輸出格式如下
int tag = 0;//tag標(biāo)記,在方法中輸出二維數(shù)組時(shí)所需要的標(biāo)記
printf("使用傳遞過來的二維數(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é)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對腳本之家的支持。
- 深入剖析Android中init進(jìn)程實(shí)現(xiàn)的C語言源碼
- 詳解C語言用malloc函數(shù)申請二維動(dòng)態(tài)數(shù)組的實(shí)例
- C語言 module_init函數(shù)與initcall案例詳解
- C語言函數(shù)傳遞數(shù)組和傳遞地址的區(qū)別你知道嗎
- VS2017開發(fā)C語言出現(xiàn)“no_init_all“的解決辦法
- C語言的數(shù)組指針與函數(shù)指針詳解
- C語言全方位講解指針與地址和數(shù)組函數(shù)堆空間的關(guān)系
- C語言創(chuàng)建數(shù)組實(shí)現(xiàn)函數(shù)init,empty,reverse
相關(guān)文章
C++實(shí)現(xiàn)兩個(gè)日期間差多少天的解決方法
本篇文章用實(shí)例說明,在C++中實(shí)現(xiàn)兩個(gè)日期間差多少天的方法。需要的朋友參考下2013-05-05
Qt實(shí)現(xiàn)圖片移動(dòng)實(shí)例(圖文教程)
這學(xué)期實(shí)訓(xùn)的時(shí)候用MFC做過一個(gè)飛機(jī)大戰(zhàn),很無聊的東西,一直想用Qt做一個(gè);首先需要解決的問題是圖片的移動(dòng),怎么說飛機(jī)啊子彈啊都是動(dòng)著的,圖片當(dāng)然要跑起來,感興趣的你可不要走開啊2013-01-01
C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
這篇文章主要介紹了C語言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法,涉及C語言針對數(shù)組的遍歷與判斷技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2015-07-07

