日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

向函数传递一维数组和已知大小的二维数组

發布時間:2025/3/21 编程问答 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 向函数传递一维数组和已知大小的二维数组 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一維數組

在C語言中,向函數傳遞參數只有一種形式——值傳遞。不管是傳遞一個整型變量,還是傳遞一個指針,函數得到的都只是實參的拷貝值。

先定義一個一維整型數組:

int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

首先明確一點:數組名和指針是兩個不同的概念,盡管數組名在絕大部分情況下被隱式轉換成指針使用。
我們沒辦法真正地把數組傳遞給函數,我們只能傳遞一份指向數組起始位置的指針的拷貝。

函數原型:

void func(int *a); void func(int a[]);

在當前這個上下文環境中,二者等價。你可以使用任何一種聲明,如果要說哪一種最準確,應該是第一種。因為實參實際上是個指針,而不是數組。

這樣我們就把指向數組首元素的指針的拷貝傳遞給了函數。在實際應用中,我們通常還會傳遞另一個參數,用來表示數組的長度:

void func(int *a, int len);

通過第二個參數,我們可以很方便地在函數內遍歷這個數組:

void func(int *a, int len) {int i = 0;while (i < len) {printf("%d ", a[i]);i++;} }func(a, 10); // 打印數組a的所有元素

二維數組

接下來是二維數組,傳遞二維數組參數有更多需要注意的點。
先定義一個二維整型數組:

int b[2][3] = { {0, 1, 2}, {3, 4, 5} };

我們實際上要向數組傳遞一個指向數組首元素的指針的拷貝,首先必須搞清楚數組名b的類型應該是:

int (*)[3]

數組名的類型取決于數組元素,數組b長度是2,每個元素是長度為3的整型數組,所以b的類型是上面那坨(如果這里有疑問可以看我的另一篇文章《徹底弄懂C語言數組名》)。
如果上面的內容沒有疑問,那么就來看函數原型:

void func2(int (*p)[3]); // 兩種都可以,第一種更準確 void func2(int p[][3]);

同樣地,我們可以傳遞另外兩個參數,分別表示行數和列數:

void func2(int (*p)[3], int len_i, int len_j);

但是請千萬注意:寫成二級指針是錯誤的!

void func2(int **p); // 不可以這樣~>_<~

為什么不行呢?因為指向指針的指針和指向數組的指針是不同的。如果這樣寫,有可能你的程序能正確運行,但也有可能因為尋址錯誤導致程序崩潰哦!

下面給出完整的例子:

#include <stdio.h>void func2(int (*p)[3], int len_i, int len_j);int main() {int a[2][3] = { {0, 1, 2}, {3, 4, 5}};func2(a, 2, 3);return 0; }void func2(int (*p)[3], int len_i, int len_j) {int i, j;for (i = 0; i < len_i; i++) {for (j = 0; j < len_j; j++) {printf("%d ", p[i][j]);}printf("\n");} }


但是,不知道你有沒有發現一個問題,我們必須在函數原型中指定第二維的大小,這意味著函數不能復用。為了向函數傳遞一個大小未知的數組,我將介紹兩種技巧。

第一種是通過void *指針接收一個數組,同時傳遞兩個參數標記行和列,然后在函數內部將void *指針強制轉換成二維數組。

還有一種技巧叫做壓扁數組(flattening the array),是通過一級指針遍歷二維數組的方法。只要數組在內存中連續,這個技巧就可以用。我將在下一篇文章中詳細介紹這個技巧。

總結

以上是生活随笔為你收集整理的向函数传递一维数组和已知大小的二维数组的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 蜜臀av无码精品人妻色欲 | 天堂av电影在线观看 | 日韩成人激情 | 色播在线播放 | 国产人妻777人伦精品hd | 又黄又爽的视频 | 国产免费一区二区三区四区五区 | 国产老女人乱淫免费可以 | 古装三级吃奶做爰 | 日韩欧美www| 天天操天天爱天天干 | 人人妻人人澡人人爽国产一区 | 夜夜春视频 | 精品国自产在线观看 | 神马影院午夜伦理片 | 69免费视频| 四虎av在线播放 | 亚洲深夜视频 | 亚洲人一区| 日韩经典在线 | 中文字幕在线观看网址 | 免费在线看黄网站 | 韩国三级bd高清中字2021 | 色天堂影院 | 欧美91成人网| 波多av在线 | 欧美9999| 人人看人人爽 | 一起操在线 | 亚洲最大网 | 久久免费小视频 | 亚洲麻豆一区二区三区 | 国产av国片精品 | 丝袜人妻一区二区三区 | 欧美日本韩国一区二区三区 | 色四虎 | 亚洲a√| 国产一区综合 | 日本爱爱免费视频 | 国产精品一区网站 | 色超碰 | 亚洲手机看片 | 色视频免费在线观看 | 国产99久久久久 | 日韩欧美在线视频观看 | 免费看av毛片 | 亚洲欧美一区二区三 | 国产又爽又黄的激情精品视频 | 国产自在线拍 | 亚洲色图40p | www.男人的天堂.com | 亚洲激情一区 | 亚洲天堂精品在线观看 | 欧美aaa级片| 久久综合久久久久 | 久久国产成人精品国产成人亚洲 | 秋霞在线一区二区 | 日韩av手机在线 | 久久精品国产亚洲av麻豆 | 大陆一级黄色片 | 91黄色小网站 | 全部孕妇毛片 | 激情偷乱人成视频在线观看 | 波多野结衣一区二区三区中文字幕 | 日韩免费高清一区二区 | 少妇高潮一区二区三区99欧美 | 人妻洗澡被强公日日澡电影 | 三上悠亚人妻中文字幕在线 | 自偷自拍亚洲 | 国产精品第72页 | 91欧美精品| 亚洲熟妇无码久久精品 | 95精品视频 | 久久久无码人妻精品一区 | 性欧美18—19sex性高清 | 色乱码一区二区三区在线男奴 | 中文有码视频 | 2一3sex性hd | 日韩成人午夜电影 | 这里只有精品在线播放 | 亚洲精品免费网站 | 91重口味| 国产精品国语自产拍在线观看 | 日韩一区二区在线看 | 在线观看亚洲国产 | 久久亚洲AV成人无码国产人妖 | 午夜日韩电影 | 欧美黄色录像视频 | 久久久久黄色 | 手机看片福利一区 | 正在播放亚洲 | 日韩精品免费在线视频 | 亚洲色图36p | 久久精品一区二区三区黑人印度 | 亚洲欧美日韩国产综合 | 国产麻豆91视频 | 日韩全黄 | 日韩在线视 | 成人免费在线观看av |