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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

c语言值传递 地址传递 引用传递参数,C++参数传递(值传递,引用传递)

發布時間:2023/12/19 c/c++ 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 c语言值传递 地址传递 引用传递参数,C++参数传递(值传递,引用传递) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

值傳遞

值傳遞是指在調用函數時將實際參數復制一份傳遞到函數中,這樣在函數中如果對參數進行修改,將不會影響到實際參數。

在函數結束返回后,形參被丟棄釋放,實參的內容不會被改變

數據值傳遞和地址值傳遞

數據值傳遞

//C語言的數據值傳遞

#include

int fun(int a)

{

a = 3; //對a進行改變

printf("fun's a is:%d\n",a);

return 1;

}

int main()

{

int a = 1;

printf("main's original a is:%d\n",a);

fun(a); //調用fun(int )

printf("main's a is:%d",a);

return 0;

}

地址值傳遞

//C語言的地址值傳遞(實例一)

#include

int fun(int* p)

{

*p = 3; //對p指向的數據(main's a)進行了改變

return 1;

}

int main()

{

int a = 1;

int* p = &a; //初始化指針并指向a

printf("main's original a is:%d\n",a);

fun(p); //調用fun(int* )

printf("main's a is:%d",a);

return 0;

}

//C語言的地址值傳遞(更揭示值傳遞實質)(實例二)

#include

int fun(int* p)

{

p++; //對傳過來的地址值進行更改

printf("fun's p is:%d\n",p);

return 1;

}

int main()

{

int a = 1;

int* p = &a; //初始化指針并指向a

printf("main's original p is:%d\n",p);

fun(p); //調用fun(int* )

printf("main's p is:%d",p);

return 0;

}

地址值傳遞總結:

第一個實例常用;第二個不常用,但更加揭示值傳遞的實質。

通過地址值傳遞可以實現被調用的函數中的數據變更影響到全局(實例一),不同函數可以共同維護和使用同一內存塊兒的數據。

地址值傳遞實質是值傳遞,不同于數據值傳遞的是地址值復制到被調用的函數中后通常不加改變和參與運算,而是直接取用其指向的數據,來修改和運算。(取用方式:*p)

引用傳遞

在C++中,函數參數的傳遞方式有引用傳遞。所謂引用傳遞是指在調用函數時自動將實際參數的地址傳遞到函數中,并作為局部變量在堆棧中開辟內存空間,被調函數對形參的任何操作都被處理成間接尋址,即通過堆棧中存放的地址訪問主調函數中的實參變量。那么在函數中對參數所進行的修改,將影響到實際參數。

//C++引用傳遞

#include

using namespace std;

int fun(int& b)//參數定義為一個整型引用

{

b = 88; //修改形參b的值

cout << "fun's b is:" << b << endl;

}

int main()

{

int a = 1;

cout << "main's original a is:" << a << endl;

fun(a); //調用fun(int& )

cout << "main's a is:" << a << endl;

return 0;

}

辨析

值傳遞是直接傳遞實際參數的值到形參,相當于copy, 實參和形參分別占用不同的相同大小的存儲單元,對形參的操作并不影響實參

引用傳遞是傳遞實際參數的地址值到形參,形參作為局部變量在堆棧中開辟了內存空間,接收實參的地址值存放,被調函數對形參的所有操作都被處理為間接尋址,即通過堆棧中存放的地址訪問主調函數中的實參變量,此時對形參的所有操作即是對實參的操作

本文借鑒/推薦參考

總結

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

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