存放內(nèi)存單元的地址,該地址被形象的稱為指針,存放在指針中的值都被當(dāng)成地址處理。而指針變量就是一個存放地址的變量。與普通的變量相同把它看作一個新的類型就好。
創(chuàng)新互聯(lián)建站堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:做網(wǎng)站、網(wǎng)站制作、企業(yè)官網(wǎng)、英文網(wǎng)站、手機端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的綿竹網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!在32位平臺下,有32根地址線,有2^32個排列組合,因此可編2^32(4G)個地址。編址的最小單位是字節(jié)。
由于int變量占四個字節(jié),取地址取最低地址表示。(double、long同理)。
在32位機器上,地址是32個0或1組成的二進制序列,(32/8)那地址就得用4個字節(jié)空間來存儲,所以一個指針變量的大小就應(yīng)該是4個字節(jié)。
同理在64位機器上,有64根地址線,(64/8)因而地址要用8個字節(jié)空間來存儲。
type+ * (二級指針:int **,type是int*)。type*****類型的指針是為了存放某類型變量的地址。
指針的類型決定了指針向前或向后走一步有多大距離:加減上所指向類型占字節(jié)的大小。因而加1或減一是令指針指向了下或上一個一個變量、數(shù)組、結(jié)構(gòu)體。。。。
看下面例子:
int n = 10;
int *pi = &n;
char *pc = (char *)&n;
printf("%p\n", pi); ---> 00D8F9D0
printf("%p\n", pi+1); --->00D8F9D4
printf("%p\n", pc); --->00D8F9D0
printf("%p\n", pc+1); --->00D8F9D1
答案符合正如我們解釋的那樣
ps:二級指針、三級指針..他們指向的類型都是指針類型,所以加一或減一都會加或減4個字節(jié)。(指針?biāo)伎臻g大小為4B)
指針的類型決定了,對指針解引用的時候有多大權(quán)限(能訪問幾個字節(jié)),例如:char* 指針解引用就只能訪問一個字節(jié),而int*的指針就能夠訪問4個字節(jié)。
int n = 0x11223344;
int* pi = &n;
char* pc = (char*)&n; //解引用只能指向一個空間
*pc=0x55;
printf("%x\n", n); --->11223355
*pi = 0;
printf("%x\n", n); --->0
代表兩個指針之間經(jīng)歷的元素。
eg:
int a[10];
int *p=&a[0];
int *q =&a[9];
則:p-q=9不是(4*9=36)
若 char *p=(char*)&a[0];
char *q =(char *)&a[9];
p-q=36; //元素個數(shù)由指針指向類型決定。
標(biāo)準(zhǔn)規(guī)定:允許指向數(shù)組元素的指針與指向數(shù)組最后一個元素后面的那個內(nèi)存位置的指針比較,但是不允許與指向第一個元素之前的那個內(nèi)存位置的指針比較。
對比:
for(vp=&values[N_values];vp>&values[0];) //比較都是合法的
{
*--vp=0;
}
for(vp=&values[N_values-1];vp>=&values[0];vp--) //vp=-1時比較后不成立然后才退出循環(huán)!
{
*vp=0;
}
存放一級指針地址的變量。
因為指針也是變量,既然是變量,那他也肯定有地址,有地址,所以也可以被保存起來,保存一級指針地址的空間,就是二級指針。
其關(guān)系表示
兩者本質(zhì)上沒有什么關(guān)系!
數(shù)組名與數(shù)組地址及數(shù)組首元素的關(guān)系:數(shù)組地址與數(shù)組首元素地址在數(shù)值上相等。但意義上不同。(數(shù)組地址加一加過了整個數(shù)組,而首元素地址加一只加過了一個元素)
數(shù)組名在取地址符號后,及在sizeof中單獨使用時代表整個數(shù)組,剩下的情景都表示數(shù)組中首元素地址。
數(shù)組表示中 數(shù)組名稱【元素下標(biāo)】=*(數(shù)組名稱+元素下標(biāo)) 此處的數(shù)組名稱表示首元素地址。
個人心得:指針就是一個存放地址的變量,二級指針也是個變量,三級四級都是,所以不要總把指針看作個例。
數(shù)組和指針沒有什么關(guān)系,只是在某些表達形式上,有很多相同之處。
一個數(shù)組,里面存放元素的類型都是某類型指針,數(shù)組內(nèi)每個空間都存放一個地址,指向某內(nèi)存空間。
int* arr1[10]; //×××指針的數(shù)組
char* arr2[4]; //一級字符指針的數(shù)組
char** arr3[4];//二級字符指針的數(shù)組
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。
新聞名稱:指針總結(jié)基礎(chǔ)-創(chuàng)新互聯(lián)
標(biāo)題來源:http://www.rwnh.cn/article16/csjegg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站、軟件開發(fā)、關(guān)鍵詞優(yōu)化、定制開發(fā)、靜態(tài)網(wǎng)站、網(wǎng)站建設(shè)
聲明:本網(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)