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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言函数参数传递

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

1.值傳遞

void swap(int x,int y) {int temp = x;x = y;y = temp; }void main() { int a = 10, b = 20;swap(a, b); }

執行后,并不會交換。

2.引用傳遞

void swap(int &x,int &y) {int temp = x;x = y;y = temp; }void main() { int a = 10, b = 20;swap(a, b);printf("a=%d\nb=%d\n", a, b); }

執行后,發生交換。

3.指針傳遞

void swap(int *x,int *y) {int temp = *x;*x = *y;*y = temp; }void main() { int a = 10, b = 20;swap(&a, &b);printf("a=%d\nb=%d\n", a, b); }

執行后,發生交換。

4.數組做參數,傳的到底是什么?

  參數傳遞只有上面三種,但是如果加上數組,就會產生幾種新形式。?

  首先,明確數組型變量名本身只是該數組所占存儲空間的首地址:

int a[3] = { 1, 2, 3 };int *p = a; //等價于下行//int *p = &a[0]; printf("%d", *p);

   》》》典型的數組做參數

void fun(char s[]){for (int i = 0; s[i] != '\0'; i++)printf("%c", s[i]); } void main() {char str[] = "Hello World!";fun(str); }

  函數調用時,這里系統不會為形參分配數組存儲空間,而是僅僅分配一個存放數組地址(第一個元素地址)的存儲空間,此后,將實參數組的首地址傳遞給形參變量。其實本質與下相同,只不過還是數組形式的(數組名代替指針)。

  》》》既然數組型變量名本身只是該數組所占存儲空間的首地址,我們當然可以用指針做形參來接收數組實參

void fun(char *p){while (*p){printf("%c", *p);p++;} } void main() {char str[] = "Hello World!";fun(str); }

  不過問題是如果這樣,無法把握數組結束(除非知道數組長度)。而對于字符數組(上例),由于字符串末尾有結束標志'\0'(ascii碼正好是0),所以就很容易利用指針來判斷字符串是否結束。

轉載于:https://www.cnblogs.com/qwer112/p/8471051.html

總結

以上是生活随笔為你收集整理的C语言函数参数传递的全部內容,希望文章能夠幫你解決所遇到的問題。

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