變量是存放在內(nèi)存中的,只要是存放在內(nèi)存中的二進制數(shù)就會有一個內(nèi)存的地址,所有變量是有地址的!
成都創(chuàng)新互聯(lián)公司一直秉承“誠信做人,踏實做事”的原則,不欺瞞客戶,是我們最起碼的底線! 以服務為基礎,以質(zhì)量求生存,以技術(shù)求發(fā)展,成交一個客戶多一個朋友!為您提供成都網(wǎng)站建設、網(wǎng)站制作、成都網(wǎng)頁設計、微信平臺小程序開發(fā)、成都網(wǎng)站開發(fā)、成都網(wǎng)站制作、成都軟件開發(fā)、成都App制作是成都本地專業(yè)的網(wǎng)站建設和網(wǎng)站設計公司,等你一起來見證!
那函數(shù)是什么呢?函數(shù)是由一些運行的語句組成的,程序運行的時候就會把函數(shù)中的語句調(diào)用到內(nèi)存中去,那么函數(shù)代碼在內(nèi)存中開始的那個內(nèi)存空間的地址就是函數(shù)的地址!
至于函數(shù)中用的變量的地址并不是放在代碼區(qū)的,一般都放在另外的兩個地方,其實地址上是有很大的差值的
希望你能理解上面的內(nèi)容,祝愿你學習C語言能馬到成功!
f(a); //調(diào)用函數(shù)f,q指向a數(shù)組的第1個位置即指向a[0]
i=0;[i=0]
i5成立開始循環(huán):(*q)++;q指向的單元自加1,a數(shù)組[2,2,3,4,5]
i++;[i=1],i5成立繼續(xù)循環(huán):(*q)++;q指向的單元自加1,a數(shù)組[3,2,3,4,5]
i++;[i=2],i5成立繼續(xù)循環(huán):(*q)++;q指向的單元自加1,a數(shù)組[4,2,3,4,5]
i++;[i=3],i5成立繼續(xù)循環(huán):(*q)++;q指向的單元自加1,a數(shù)組[5,2,3,4,5]
i++;[i=4],i5成立繼續(xù)循環(huán):(*q)++;q指向的單元自加1,a數(shù)組[6,2,3,4,5]
i++;[i=5],i5不成立結(jié)束循環(huán)
輸出a數(shù)組
注意q指針的內(nèi)容一直沒變,如果要變需要寫成q++;而不是(*q)++;
你對函數(shù)調(diào)用和參數(shù)傳遞還不是很理解
1.首先函數(shù)調(diào)用的參數(shù)有形參和實參之分
swap(p,q);//p q為實參
void swap(int*a,int*b)//a b為形參
{int*t;
t=a;a=b;b=t;
}
2.指針變量名表示的是變量的值,這個值是其他變量的地址,而不是指針變量本身所在內(nèi)存空間的地址
如:
int a;//定義整型變量,假設其地址為0xaaaaaaaa
int *p;//定義一個指針變量p,肯定要為其分配內(nèi)存,假設為0xffffffff,還沒初始化,里面的數(shù)據(jù)是不確定的。
p=a;//p表示的0xffffffff里面的數(shù)據(jù),是a的地址,執(zhí)行后0xffffffff里面的數(shù)據(jù)變成a的地址,即0xaaaaaaaa
*p=5;//往a里寫入數(shù)據(jù)
3.形參跟實參是不同的變量,占用不同的內(nèi)存空間
所以a b已經(jīng)是兩個跟p q不同的變量了。
只不過是值跟他們相等罷了。
就如int m,n;
m=n; 你能說m和n是同個變量么?
4.既然形參和實參是不同的變量,
t=a;a=b;b=t;
交換a b的值(交換存儲在a b指針變量里的數(shù)據(jù),這個數(shù)據(jù)是地址,變成a跟q指向同一個對象,b q指向同一個對象)不會影響到p q的值
int t;
t=*a;*a=*b;*b=t;//交換a b指針變量里的地址所指向的數(shù)據(jù),這樣才能交換。
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';}//加上這一句就變了
可以通過函數(shù)指針(也就是你說的函數(shù)地址)調(diào)用,可以這樣使用:
#include
int
fun(int
a)
{
printf("a
=
%d\n",
a);
printf("hello
world\n");
}
int
main()
{
int
(*pFun)(int
a);
pFun
=
fun;
(*pFun)(123);
return
0;
}
輸出結(jié)果:
123
hello
world
分享名稱:c語言的函數(shù)調(diào)用地址 C語言中地址
當前網(wǎng)址:http://muchs.cn/article34/hgeope.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、網(wǎng)站維護、動態(tài)網(wǎng)站、搜索引擎優(yōu)化、企業(yè)建站、網(wǎng)站設計公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)