想要了解指針的概念,首先要了解變量在內(nèi)存中是如何存儲的。
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計、網(wǎng)站制作與策劃設(shè)計,西峽網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)10多年,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:西峽等地區(qū)。西峽做網(wǎng)站價格咨詢:18980820575int a=3; //這行代碼的意思是,首先在計算機的隨機區(qū)域開辟一個地址,連續(xù)四個字節(jié)的空間,把整數(shù)3存放在這個連續(xù)的空間上
a代表了這個空間的首地址,但a自身不是地址類型。
變量在存儲時,內(nèi)存被分為一塊一塊的。每一塊都有一個特有的編號。而這個編號可以暫時理解為指針,就像樓房每層的房間都有自己的門牌號一樣。
? 總的來說,指針就是地址。但是我們平時說的指針其實指的是指針變量。指針變量就是一個存放地址的變量。
指針的類型在我們定義一個變量的時候,要確定它的類型。就像 int i、char c、float f 一樣,在定義指針變量時也是一樣的,必須確定指針類型。
int 型的指針需要用 int 類型的指針存儲,char 型的指針需要用 char 類型的指針存儲。
* 和 &int *p; //定義了一個整型的指針變量
char *q; //定義了一個字符型的指針變量
學(xué)習(xí)指針的時候,我們會很頻繁的看見?* 和 &?這兩個符號,根據(jù)我們對c語言運算符號的了解,知道 * 是乘法運算符,& 是按位與運算符,但是這兩個符號與指針一結(jié)合它們各自所代表的含義就會發(fā)生變化,
& : 在運算時是表示按位與運算,但是在指針相關(guān)的語句中使用是取直接地址的意思,取直接地址就是取數(shù)據(jù)存放的首地址。例:int i=3;? &i 的含義是取變量 i 的地址。
*?: 有三層含義,在運算時表示乘法,在與指針相關(guān)的語句中使用時會有兩種用法,一種用法是定義時,表示的是數(shù)據(jù)類型——地址類型,另一種是在使用時,表示的是取間接地址:就是取地址中的數(shù)據(jù)。例:int *p;int i=3;? p?= &i;? p 為 i 的地址,*p?則為通過 i 的地址,獲取 i 中存放的內(nèi)容。
代碼示例:
int a=3; //定義了一個 普通變量 a
int *p; //定義了一個指針變量
p = &a; //通過取地址符 &,獲取 a 的地址,把地址賦值給指針變量
printf("%d\n", *p); //通過 間接尋址符 *,獲取指針指向的內(nèi)容
指針的定義指針變量的定義格式為:數(shù)據(jù)類型 *指針名;
例如:下面分別定義了 int、float、char 類型的指針變量。
int *p;
float *q;
char *c;
如上面的定義,指針變量名為 p、q、c。并不是 *q、*q、*c。
代碼示例:
void point(void)
{
int* p;
????int a[3] = { 1,2,3 };
????p = a; //指針指向數(shù)組 等價于 p=&a[0],因為數(shù)組名稱代表了數(shù)組首個元素的地址,地址是一種數(shù)據(jù)類型用 * 表示。
????p++; // p++ 表示指針指向下一個元素。
????char c[3] = { 'a','e','s' };
????//p=c; //這樣是錯誤的,p 指向的是整型數(shù)據(jù),c 是字符型數(shù)組,此時執(zhí)行 p++,將指向字符型數(shù)組的第四個元素。
????char* f;
????f = c; //定義一個字符型指針,指向字符型數(shù)組。
????(char*)p = c; //數(shù)據(jù)類型的強制轉(zhuǎn)換。 p 本來是整型指針,(char*) 把 p 強制轉(zhuǎn)換成字符型指針,就可以指向字符型數(shù)據(jù)了。
}
指針的輸入代碼示例:
void point1(void)
{
int* p;
????int a;
a = 3;
????p = &a;
scanf_s("%d", p); //等價于 scanf("%d", &(*p)); 這里的 * 是取間接地址,取的是 p 中存放的數(shù)據(jù),& 是取數(shù)據(jù)的地址。
}
指針的輸出代碼示例:
void point2(void)
{
int a;
int* p;
a = 3;
p = &a;
printf("%d", *p);// * 是取間接地址,printf 輸出的是 p 里的數(shù)據(jù)。
}
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級服務(wù)器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧
文章標(biāo)題:認(rèn)識指針(基礎(chǔ))-創(chuàng)新互聯(lián)
瀏覽地址:http://vcdvsql.cn/article26/jjcjg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、網(wǎng)站策劃、網(wǎng)站設(shè)計公司、靜態(tài)網(wǎng)站、網(wǎng)站收錄、搜索引擎優(yōu)化
聲明:本網(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)