指針變量無非就是一個(gè)表示內(nèi)存地址的長整數(shù)而已,當(dāng)然可以比較。指向同一個(gè)數(shù)組時(shí),兩個(gè)指針的大小就表示誰指向的元素靠前或靠后。如果不是指向同一個(gè)數(shù)組,比較大小就只能看出誰指向的內(nèi)存空間地址較小,沒什么意義。
創(chuàng)新互聯(lián)建站是專業(yè)的孝感網(wǎng)站建設(shè)公司,孝感接單;提供網(wǎng)站制作、成都網(wǎng)站制作,網(wǎng)頁設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行孝感網(wǎng)站開發(fā)網(wǎng)頁制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!
對(duì)變量a的訪問有兩種方式:
一是直接按地址0x065FDF4H找到a的存儲(chǔ)單元,從而對(duì)變量a進(jìn)行訪問;
二是按系統(tǒng)為p=a分配的地址先找到p=a,然后根據(jù)p,a的值(即變量a地址0x065FDF4H)找到變量a在內(nèi)存中的存儲(chǔ)單元,從而對(duì)變量a進(jìn)行訪問。對(duì)于前一種訪問方式稱為直接訪問方式,后一種訪問方式稱為間接訪問方式。
擴(kuò)展資料
訪問變量,首先應(yīng)找到其在內(nèi)存的地址,或者說,一個(gè)地址唯一指向一個(gè)內(nèi)存變量,如果將變量的地址保存在內(nèi)存的特定區(qū)域,用變量來存放這些地址,這樣的變量就是指針變量,通過指針對(duì)所指向變量的訪問,也就是一種對(duì)變量的“間接訪問”。
設(shè)一組指針變量pa、pb、px、py、pm、pch1、pch2,分別指向上述的變量a、b、x、y、m、ch1、ch2,指針變量也同樣被存放在內(nèi)存,盡管所指向的變量類型不同,但是這些指針變量所占內(nèi)存空間都是2個(gè)字節(jié),而與所指向變量的類型無關(guān)。
C語言無法輸出指針?biāo)赶虻目臻g的大??!
一般,我們獲取一個(gè)變量所占內(nèi)存空間的方法為:sizeof(變量名或類型名),如:
int?a;
int?aa[10];
int?*p=aa;
printf("sizeof(int)=%d\n",?sizeof(int)?);??//現(xiàn)在的機(jī)器一般為32位或64位機(jī),int類型占四個(gè)字節(jié),所以輸出4
printf("sizeof(?a?)=%d\n",?sizeof(a)?);??//輸出4
printf("sizeof(?aa?)=%d\n",?sizeof(aa)?);??//輸出4*10=40
printf("sizeof(p)=%d\n",?sizeof(p)?);//輸出4??見下面說明
printf("sizeof(int?*)=%d\n",?sizeof(int?*)?);//輸出4??見下面說明
指針變量定義:用來存儲(chǔ)內(nèi)存地址的變量。指針變量中存儲(chǔ)的是內(nèi)存地址數(shù)據(jù)(一個(gè)整型數(shù)),而不是真正的數(shù)據(jù),真正的數(shù)據(jù)是在地址中存放的。所以,指針變量實(shí)際上就是個(gè)整型變量,用sizeof命令去獲取任意類型的指針變量都會(huì)得到4。
指針變量存儲(chǔ)的是一個(gè)存儲(chǔ)空間的首地址,究竟這個(gè)空間有多大,可以存儲(chǔ)多少個(gè)數(shù)據(jù),這是分配空間時(shí)所決定的。單獨(dú)看一個(gè)地址值,是看不出其空間大小的。如:
int a;
int aa[10];
int *p ; //定義一個(gè)指針變量
p=aa ; //指向數(shù)組aa,aa的數(shù)據(jù)空間是40字節(jié),10個(gè)整數(shù)
p=a; //指向一個(gè)整型變量,它的存儲(chǔ)空間是4字節(jié),一個(gè)整數(shù)
void exchange(int *p1,int *p2,int *p3)
{
void ex(int *p11,int *p22);
if(*p1*p2) ex(*p1,*p2);//ex(p1,p2);傳遞指針
if(*p1*p3) ex(*p1,*p3);// ex(p1,p3);
if(*p2*p3) ex(*p2,*p3);// ex(p2,p3);
}
指針即為地址,指針幾個(gè)字節(jié)跟語言無關(guān),而是跟系統(tǒng)的尋址能力有關(guān)。
比如:以前是16為地址,指針即為2個(gè)字節(jié);現(xiàn)在是32位系統(tǒng),則就為4個(gè)字節(jié),64位32位系統(tǒng),則就為8個(gè)字節(jié)。
擴(kuò)展資料:
使用指針來讀取數(shù)據(jù),在重復(fù)性操作的狀況下,可以明顯改善程序性能,例如在遍歷字符串,查取表格,控制表格及樹狀結(jié)構(gòu)上。對(duì)指針進(jìn)行復(fù)制,之后再解引用指針以取出數(shù)據(jù),無論在時(shí)間或空間上,都比直接復(fù)制及訪問數(shù)據(jù)本身來的經(jīng)濟(jì)快速。
指針的機(jī)制比較簡單,其功能可以被集中重新實(shí)現(xiàn)成更抽象化的引用(reference)數(shù)據(jù)形別。許多編程語言中都支持某種形式的指針,最著名的是C語言,但是有些編程語言對(duì)指針的運(yùn)用采取比較嚴(yán)格的限制,如Java一般避免用指針,改為使用引用。
有兩種含義,一是作為數(shù)據(jù)類型,二是作為實(shí)體。
指針作為實(shí)體,是一個(gè)用來保存一個(gè)內(nèi)存地址的計(jì)算機(jī)語言中的變量。指針一般出現(xiàn)在比較底層的程序設(shè)計(jì)語言中,如C語言。高層的語言如Java一般避免用指針,而是引用。
指針作為數(shù)據(jù)類型,可以從一個(gè)函數(shù)類型、一個(gè)對(duì)象類型或者一個(gè)不完備類型中導(dǎo)出。從中導(dǎo)出的數(shù)據(jù)類型稱之為被引用類型(referenced type)。指針類型描述了一種對(duì)象,其值為對(duì)被引用類型的實(shí)體的引用。
參考資料:百度百科 指針
對(duì)于這個(gè)你只要記住一句秘訣就好,指針的大小僅僅取決指針本身的大小,不取決于指針指向的大小。 還有就是還有一個(gè)虛擬內(nèi)存和物理地址的關(guān)系,有MMU映射,8086里有硬件完成一個(gè)地址偏移的過程,物理地址 = 基址*16 + 變址。
int?huandizhi(int?*a,int?*b)
{
int?*temp;
temp=a;
a=b;
b=temp;
}
出在這個(gè)函數(shù)里面
交換的是a和b的值。 這個(gè)是交換形參本身的值,無法帶回主函數(shù)。
要影響實(shí)參,那么只能交換*a和*b的值。
本文名稱:c語言函數(shù)指針大小 c語言函數(shù)參數(shù)指針
文章路徑:http://www.rwnh.cn/article40/doohdeo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、軟件開發(fā)、做網(wǎng)站、電子商務(wù)、動(dòng)態(tài)網(wǎng)站、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)