日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

C语言函数参数传递详解

發(fā)布時(shí)間:2023/12/20 51 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C语言函数参数传递详解 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1.值傳遞和地址傳遞

? (1)值傳遞:即按“值(如數(shù)字10)”傳遞參數(shù),是將實(shí)參變量的值復(fù)制一個(gè)到臨時(shí)存儲(chǔ)單元中(該存儲(chǔ)單元會(huì)隨著調(diào)用的函數(shù)運(yùn)行結(jié)束而釋放掉),如果在調(diào)用過(guò)程中改變了形參的值,不會(huì)影響實(shí)參變量本身,即實(shí)參變量保持調(diào)用前的值不變

?(2)地址傳遞:即按“地址(如0019FEDC)”傳遞參數(shù),把實(shí)參變量的地址傳送給被調(diào)用函數(shù),形參和實(shí)參共用內(nèi)存的同一地址。在被調(diào)用過(guò)程中,形參的值一旦改變,相應(yīng)實(shí)參的值也跟著改變

注:值傳遞在函數(shù)調(diào)用過(guò)程中會(huì)為形參重新開(kāi)辟空間,形參與實(shí)參分別占用不同的地址空間,而地址傳遞,形參和實(shí)參共用同一內(nèi)存地址

舉栗子:

①值傳遞(普通類(lèi)型變量的參數(shù)傳遞)
void fun1(int a){
?? ?a=2;
?? ?printf("在fun1函數(shù)中,變量a值的地址是:%p\n",&a);
?? ?a=a+1;
}
void main(){
?? ?int n=1;
?? ?printf("在main函數(shù)中,變量n的地址是:%p\n",&n);
?? ?fun1(n);
?? ?printf("fun1函數(shù)中形參a加1之后,實(shí)參n的值是%d\n",n);//n的值任然不變還是1
}

運(yùn)行結(jié)果

②地址傳遞(指針作為參數(shù))

void fun2(int *q){
?? ?printf("在fun2函數(shù)中q的值是(和m的地址,p的值一樣):%p\n",q);
?? ?*q=*q+5;
}

void main(){
?? ?int m=10;
?? ?int *p=&m;
?? ?printf("在main函數(shù)中,m值的地址:%p\n",&m);
?? ?printf("在main函數(shù)中,p指針的值(p所指向變量的地址):%p\n",p);
?? ?printf("在main函數(shù)中,p指針的地址(指針變量本身也要占存儲(chǔ)單元):%p\n",&p);
?? ?fun2(p);//傳的是p的值,該值是m的地址
?? ?printf("執(zhí)行fun2函數(shù)后,m的值是(由于形參和實(shí)參共用內(nèi)存的同一地址,形參改變實(shí)參也改變):%d\n",m);
}

注:當(dāng) “ * ” 有兩個(gè)作用 。作用一(定義指針變量):int *p;? ?作用二(取值):int m=10;? int p=&m;? printf(*p)//輸出10

運(yùn)行結(jié)果

③數(shù)組名的參數(shù)傳遞

“數(shù)組名的值”和數(shù)組的地址都存儲(chǔ)了數(shù)組的首地址

void fun3(int arr[]){
?? ?for(int i=0;i<5;i++){
?? ??? ?printf("%d",arr[i]);
?? ?}
}
void fun4(int *arr){
?? ?for(int i=0;i<5;i++){
?? ??? ?printf("%d",arr[i]);
?? ?}
}

void main(){

?? ??? ?int arr[5]={1,3,5,7,9};
?? ??? ?int*r;
?? ??? ?r=arr;
?? ??? ?fun3(arr);//傳數(shù)組名
?? ??? ?printf("\n");
?? ??? ?fun4(r);//傳遞指針
?? ??? ?printf("\n");
?? ??? ?printf("數(shù)組名的值:%p\n",arr);
?? ??? ?printf("數(shù)組的地址值:%p\n",&arr);
}

運(yùn)行結(jié)果

總結(jié)

以上是生活随笔為你收集整理的C语言函数参数传递详解的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。