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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

C语言开发笔记(六)实参和形参

發布時間:2023/12/1 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言开发笔记(六)实参和形参 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

舉例說明

#include <stdio.h>void swap(int x, int y) {int temp = 0;temp = x;x = y;y = temp; }int main(void) {int a = 1, b = 2;swap(a, b);printf("a=%d, b=%d\n", a, b);return 0; }

結果為

在函數調用時,a的值傳給x,b的值傳給y。執行完swap函數后,x和y的值是互換了,但main函數中的a和b并未互換。

該例子中a、b為實參,x、y為形參。

函數調用中發生的數據傳送是單向的。即只能把實參的值傳給形參,而不能把形參的值反向地傳給實參。因此在函數調用過程中,形參的值發生改變,而實參中的值不會變化。

形參變量只有在被調用時才分配內存單元,在調用結束時,立刻釋放所分配的內存單元。

?

稍微修改示例代碼

#include <stdio.h>void swap(int *x, int *y) {int *temp;temp = x;x = y;y = temp; }int main(void) {int a = 1, b = 2;int *p1 = &a, *p2 = &b;swap(p1, p2);printf("a=%d, b=%d\n", a, b);return 0; }

結果仍然是

這也是需要注意的,不能企圖通過改變指針形參的值而使指針實參的值改變。

?

再修改代碼

#include <stdio.h>void swap(int *x, int *y) {int *temp;*temp = *x;*x = *y;*y = *temp; }int main(void) {int a = 1, b = 2;int *p1 = &a, *p2 = &b;swap(p1, p2);printf("a=%d, b=%d\n", a, b);return 0; }

編譯的時候會出現警告:

運行后會出錯:

因為temp沒有確定的地址值,所指向的單元是不可預見的,它的值也是不可預見的。因此,對*temp賦值可能會破壞系統的正常工作狀況。所以應該用整型變量temp作為臨時輔助變量實現交換功能。

修改代碼如下:

#include <stdio.h>void swap(int *x, int *y) {int temp = 0;temp = *x;*x = *y;*y = temp; }int main(void) {int a = 1, b = 2;int *p1 = &a, *p2 = &b;swap(p1, p2);printf("a=%d, b=%d\n", a, b);return 0; }

結果為

總結

以上是生活随笔為你收集整理的C语言开发笔记(六)实参和形参的全部內容,希望文章能夠幫你解決所遇到的問題。

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