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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言 指针在函数传参中的使用

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

int add(int a, int b) ? //函數傳參的時候使用了int整型數據,本身是數值類型。實際調用該函數時,實參將自己拷貝一份,并將拷貝傳遞給形參進行運算。實參自己實際是不參與運算的。所以在該函數中,實參本身是沒有得到改變的。

int main()

{

  int x = 3, y = 5;

? ? ?? swap(x, y);

  printf("x = %d ,y = %d\n",x, y);? //交換失敗

? ? ?? swap_pointer(&x, &y);

  printf("x = %d ,y = %d\n",x, y);? //交換成功

}

int swap(int a, int b) ? ? //C語言中,函數調用時,實參傳遞給形參實際是傳值調用。也就是說,實參x和y將自己的值拷貝一份傳給形參 a 和 b;因此在函數swap中實際得到交換的是 a 和 b,而不是實參 x 和 y,因此函數執行完后,x和y的值依然沒有改變。

{

  int temp;

  temp = a; ? ? //a是swap里邊的形參,實際調用時得到的是實參x的一份拷貝,只是和x的值相等而已,其他并無任何關聯,因此在這里不能訪問到實參x

? ? ?? a = b;

  b = temp;

  return 0;

}

int swap_pointer(int *p1, int *p2) ? //C語言函數調用時,一直都是傳值調用。也就是說實際傳遞的一直都是實參的拷貝,但是在本函數中的形參和實參都不是x和y,而是x和y的地址值。這樣的話,就讓我們在調用函數里通過間接訪問*p的方式,訪問到了函數外部的實參。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? //(如果不使用指針,再調用函數內部只能訪問到形參,無法訪問到函數外部的實參)

{

  int temp;

  temp = *p1; ? ? //實際調用時,p1得到的實參是x的地址&x,所以*p1代表的就是x

? ? ?? *p2 = *p1;

? ? ?? *p1 = temp;

? ? ?? return 0;

}

轉載于:https://www.cnblogs.com/jiangtongxue/p/11079651.html

總結

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

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