#include<stdio.h>
int p = 20;
void f(int a)
{
int b;
b = a++;
p += b;
}
int main(void)
{
int a = 1, b = 5;
f(a);
p += b;
printf("%d,%d,%d",a,b,p);
return 0;
}
為什么f()函式沒有回傳值,卻可以改變p變數的值,不是說自定義函式不可以回傳數值嗎
求助
uj5u.com熱心網友回復:
p是全域變數 哪個函式都可以改uj5u.com熱心網友回復:
f()函式雖然沒有回傳值,但是在函式體中對全域變數p進行了修改,這就是f()函式的作用。需要注意的是,雖然f()對形參a也就行了修改,但是實際上并沒有改變實參a的值,此時a的值還是1,因此此時f()函式引數的傳遞方式叫做非參考傳遞。對于函式引數的參考傳遞和非參考傳遞,請參考
《C++中函式的陣列形參》
希望能夠幫到您!
uj5u.com熱心網友回復:
回傳值跟改變值沒關系啊,你把地址傳進去一樣也能改變值
uj5u.com熱心網友回復:
函式回傳值只是根據你的需求來操作,或許是為了簡便,或許是為了得到成功與否,但是這些是根據你的需求來的,你可以寫沒有的,然后只要能完成操作變數分為區域變數和全域變數,通常函式中使用區域變數,也就是函式中自己定義的,區域變數的生命周期是從函式呼叫開始到結束,所以如果其他函式有需要就要回傳這個變數的值給其他函式中的變數獲取,而之后程式結束這個便量會消亡
而你這里的p是定義為全域變數,全域變數生命周期為整個程式運行周期,又可以被所以函式呼叫,所以這里改了值變數依然存在,不會消亡,而別的變函式又可以直接使用,所以不用回傳值,這個函式的作用也就是改變這個變數的值
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/61589.html
標籤:新手樂園
