按照規(guī)定做,就行了。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供永川企業(yè)網站建設,專注與網站設計制作、網站制作、H5響應式網站、小程序制作等業(yè)務。10年已為永川眾多企業(yè)、政府機構等服務。創(chuàng)新互聯(lián)專業(yè)網站制作公司優(yōu)惠進行中。
不用問為什么。
規(guī)則,都是人為規(guī)定的。
有時,就是胡亂定的,以后,再改版升級,就變了。
用不著深究。
根據參數類型以及函數實現的功能綜合判斷。
注意不能單單看是否為指針。
要傳遞類型為A的值,如果參數類型是A*,那么為傳地址,反之,如果參數類型是A,那么是傳值。
比如,要傳遞int型參數:
1 傳值:
void func(int a);
2 傳地址:
void func(int *a);
而傳遞char *型參數。
1 傳值:
void func(char *a);
2 傳地址:
void func(char **a);
同樣是char *類型的參數,有可能是傳值,也有可能是傳地址。具體取決于函數實現功能。
分兩種,一種是按值傳遞,一種是按地址傳遞,
按值傳遞就是在子函數中開辟出一個臨時內存空間,將傳遞的數值保存在這個空間中,當子函數結束后,這個內存空間就會釋放了!
按地址傳遞則是把主函數開辟的某個內存空間首地址傳遞給子函數,子函數可以直接讀寫主函數上這段內存空間,當子函數結束后,這部分空間不會被釋放,主函數將繼續(xù)使用這段空間!
int,char,float,結構體,枚舉,聯(lián)合均為值傳遞;
數組名,指針,引用均為地址傳遞;
比如
func(int,char,float,struct S)值傳遞
func(int *,int a[],int a)地址傳遞
1、值傳遞:不管怎么傳,原來的實參的值都不會改變。
地址傳遞,原來的實參的值可能被改變。
打個比方:
值傳遞就好象你告訴別人你的帳戶里有多少錢 帳戶里的錢不會改變。
地址傳遞就好象你告訴別人你的帳戶密碼 帳戶里面的錢可以被改變。
2、例如:
#includestdio.h
point(char *pt)
main()
{char b[4]={'m','n','o','p'},*pt=b;
point(pt);
printf("%c\n",*pt);
}
point(char *p)
{p+=3;
*p='F';}//加上這一句就變了