消化指針(一)

簡(jiǎn)介

本質(zhì):指針是一個(gè)值為內(nèi)存地址的變量漱办。
假設(shè)一個(gè)指針變量名為ptr:

     ptr = &pooh;   // 把pooh的地址賦值給ptr

我們可以說(shuō),把ptr指向pooh.即ptr為變量旁壮,&pooh為常量偶宫。

間接運(yùn)算符:*

ptr = &bah;
val = *ptr;  // 找出ptr指向的值賦值給val

歸納上面的兩句可以得到:
val =bah;

指針的聲明

聲明一個(gè)指針變量時(shí)一定要指定指針?biāo)傅淖兞康念愋停驗(yàn)椴煌淖兞款愋驼加貌煌拇鎯?chǔ)空間毕泌。

 int  *pi;  // 指向int類型變量的指針
 char *pc;  // 指向char 類型指針
 float *pf,*pg; // 指向浮點(diǎn)類型指針

2.4 指針在函數(shù)中的通信

我們首先來(lái)看兩個(gè)栗子:

Snip20170307_40.png

輸出結(jié)果為:

Snip20170307_41.png
Snip20170307_43.png

輸出結(jié)果為:

Snip20170307_44.png

因此喝检,我們可以做到把變量的兩類信息傳遞給函數(shù):

function1(x);//要求參數(shù)是必須跟x一個(gè)數(shù)據(jù)類型;
function1(&x);// 要求參數(shù)必須指向一個(gè)正確類型的指針撼泛。

因此如果要在被調(diào)函數(shù)中改變主調(diào)函數(shù)的變量挠说,需要用第二種形式。

指針與數(shù)組

flizny == &flizny[0]; //數(shù)組名也可以表示數(shù)組首元素地址

下面先看看一個(gè)例子:

Snip20170307_49.png

輸出結(jié)果如下:

Snip20170307_50.png

總結(jié):在C中愿题,指針加1是增加一個(gè)存儲(chǔ)單元损俭,對(duì)數(shù)組來(lái)說(shuō),這意味著把加一后的地址就是下個(gè)元素的地址潘酗,即:

dates + 2 == &dates[2]; // 相同地址   
*(dates +2) == dates[2];  //相同的值

注意
*(dates +2) // dates的第三個(gè)元素的值
*dates +2 // dates的第一個(gè)元素加2

函數(shù)杆兵,數(shù)組和指針

函數(shù)在在聲明數(shù)組形參時(shí)可以省略數(shù)組名,下面幾種原型是等價(jià)的:

int sum(int *ar,int n);
int sum(int *,int);
int sum(int ar[],int n);
int sum(int [],int);

函數(shù)在定義時(shí)崎脉,不能省略參數(shù)名拧咳,下面幾種定義師等價(jià)的:

int sum(int *ar,int n){
}
int sum (int ar[],int n){
 }

指針操作

先看一個(gè)例子:

Snip20170308_56.png

輸出結(jié)果為:

Snip20170308_57.png

總結(jié)
賦值: ----- 地址應(yīng)該和指針類型兼容,也就是說(shuō)不能把double類型的地址賦值指向int類型的指針囚灼。
取址: ------指針變量也有自己的地址和值骆膝,&運(yùn)算符可以取到指針本身的地址,上例中0x7fff5fbff7e8的地址上灶体,存儲(chǔ)的是0x7fff5fbff800阅签,即urn的地址,因此&ptr1是指向ptr1的指針蝎抽,而ptr1是指向utn[0]的指針政钟。
指針求差:-----通常, 求差的兩個(gè)指針的兩個(gè)指針分別指向同一個(gè)數(shù)組的不同元素樟结,這樣計(jì)算可以求出兩個(gè)元素之間的差值养交,上例中兩者之差是2,表示兩個(gè)指針指向的元素相差2個(gè)int瓢宦。

解引用未初始化的指針:

  int *pt; // 未初始化的指針
  *pt =5;  // 出現(xiàn)錯(cuò)誤

指針與多重?cái)?shù)組

int zippo[4][2]; // 內(nèi)含int 數(shù)組的數(shù)組

zippo與&zippo[0]的值相同碎连,前者是占有2個(gè)int大小對(duì)象地址,后者就一個(gè)int大小地址驮履,因?yàn)殚_始地址相同所以值相同鱼辙。
zippo +1 與zippo[0]+1值不同
*(zippo[0]) 表示存儲(chǔ)在zippo[0][0];
*zippo 和&zippo[0][0]是等價(jià)的
**zippo 和*&zippo[0][0]等價(jià)

下面看個(gè)具體的例子:


Snip20170309_59.png

zippo[0]+1 // 地址增加4個(gè)字節(jié)
zippo +1 // 地址增加八個(gè)字節(jié)
zippo[2][1]等價(jià)寫法:*(*(zippo +2)+1)
下面進(jìn)行分析:

 zippo+2  //表示二維數(shù)組第三個(gè)元素
 *(zippo +2) //第三個(gè)元素的首元素地址
 *(zippo +2) +1 // 第三個(gè)元素的第二個(gè)元素地址
 *( *(zippo +2) +1) // zippo[2][1]

指向多維數(shù)組的指針

int  (*pz)[2] 廉嚼;  //pz指向一個(gè)內(nèi)含2個(gè)int 類型的值的數(shù)組
int *pz[2]; // pax是一個(gè)內(nèi)含兩個(gè)指針元素的數(shù)組倒戏,每個(gè)元素都指向int 的指針

下面看個(gè)例子

Snip20170309_59.png

總結(jié):

 zippo[m][n] == *(*(zippo+m)+n);
 pz[m][n] == *(*(pz+m)+n)

函數(shù)與多維數(shù)組

聲明函數(shù)形參如下:

 void somefunction(int (*pt)[4]);

也可以第一個(gè)括號(hào)是空的怠噪,但第二個(gè)不可以

 void somefunction (int pt[][4]);

以上內(nèi)容為本人學(xué)習(xí)筆記,相關(guān)示例參考《C Primer Plus》(第6版)中文版杜跷。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末傍念,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子葱椭,更是在濱河造成了極大的恐慌捂寿,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,194評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件孵运,死亡現(xiàn)場(chǎng)離奇詭異秦陋,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)治笨,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,058評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門驳概,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人旷赖,你說(shuō)我怎么就攤上這事顺又。” “怎么了等孵?”我有些...
    開封第一講書人閱讀 156,780評(píng)論 0 346
  • 文/不壞的土叔 我叫張陵稚照,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我俯萌,道長(zhǎng)果录,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,388評(píng)論 1 283
  • 正文 為了忘掉前任咐熙,我火速辦了婚禮弱恒,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘棋恼。我一直安慰自己返弹,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,430評(píng)論 5 384
  • 文/花漫 我一把揭開白布爪飘。 她就那樣靜靜地躺著义起,像睡著了一般。 火紅的嫁衣襯著肌膚如雪师崎。 梳的紋絲不亂的頭發(fā)上并扇,一...
    開封第一講書人閱讀 49,764評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音,去河邊找鬼穷蛹。 笑死,一個(gè)胖子當(dāng)著我的面吹牛昼汗,可吹牛的內(nèi)容都是我干的肴熏。 我是一名探鬼主播,決...
    沈念sama閱讀 38,907評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼顷窒,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼蛙吏!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起鞋吉,我...
    開封第一講書人閱讀 37,679評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸦做,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后谓着,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體泼诱,經(jīng)...
    沈念sama閱讀 44,122評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,459評(píng)論 2 325
  • 正文 我和宋清朗相戀三年赊锚,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了治筒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,605評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡舷蒲,死狀恐怖耸袜,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情牲平,我是刑警寧澤堤框,帶...
    沈念sama閱讀 34,270評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站纵柿,受9級(jí)特大地震影響蜈抓,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜藐窄,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,867評(píng)論 3 312
  • 文/蒙蒙 一资昧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧荆忍,春花似錦格带、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,734評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至微宝,卻和暖如春棺亭,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背蟋软。 一陣腳步聲響...
    開封第一講書人閱讀 31,961評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工镶摘, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嗽桩,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,297評(píng)論 2 360
  • 正文 我出身青樓凄敢,卻偏偏與公主長(zhǎng)得像碌冶,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子涝缝,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,472評(píng)論 2 348

推薦閱讀更多精彩內(nèi)容

  • 1.c語(yǔ)言中扑庞,有時(shí)需要使用只讀數(shù)組,也就是程序從數(shù)組中讀取數(shù)值拒逮,但是程序不向數(shù)組中寫數(shù)據(jù)罐氨,在這種情況下聲明并初始化...
    田亢閱讀 843評(píng)論 0 0
  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類型。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一滩援。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu)栅隐; ...
    朱森閱讀 3,430評(píng)論 3 44
  • C語(yǔ)言指針的總結(jié) 1. 變量 不同類型的變量在內(nèi)存中占據(jù)不同的字節(jié)空間。 內(nèi)存中存儲(chǔ)數(shù)據(jù)的最小基本單位是字節(jié)狠怨,每一...
    xx_cc閱讀 3,706評(píng)論 11 39
  • 導(dǎo)語(yǔ) 池靜山佣赖,書畫篆刻皆習(xí)恰矩,所學(xué)雖廣,卻各有其獨(dú)到之處憎蛤,并擅寫竹及畫潑墨山水外傅。其所創(chuàng)水墨印象系列風(fēng)格作品,令人耳目...
    駱駝?dòng)?jì)劃藝術(shù)閱讀 1,749評(píng)論 2 3
  • 我來(lái)過(guò)你的故鄉(xiāng) 走過(guò)你年少時(shí)的路 而今儂已遠(yuǎn)嫁閩粵 癡情的他卻默默的祝福著 那一行行甜蜜的情書 是個(gè)美麗的錯(cuò)誤 歸...
    新安物語(yǔ)閱讀 220評(píng)論 0 1