二維碼
微世推網(wǎng)

掃一掃關(guān)注

當(dāng)前位置: 首頁(yè) » 快聞?lì)^條 » 新聞資訊 » 正文

知識(shí)分享_C語(yǔ)言知識(shí)干貨系列_指針篇

放大字體  縮小字體 發(fā)布日期:2022-07-07 01:32:23    作者:尚暹茱    瀏覽次數(shù):245
導(dǎo)讀

談到指針,我們可能會(huì)想到鐘表上得指針,但這里得指針不是現(xiàn)實(shí)生活中看得見摸得著得鐘表上得指針,c 語(yǔ)言中得指針只存在于邏輯思維中,物理上并不存在。同時(shí),指針也是C 語(yǔ)言中最精華得部分,通過靈活地運(yùn)用指針,可

談到指針,我們可能會(huì)想到鐘表上得指針,但這里得指針不是現(xiàn)實(shí)生活中看得見摸得著得鐘表上得指針,c 語(yǔ)言中得指針只存在于邏輯思維中,物理上并不存在。

同時(shí),指針也是C 語(yǔ)言中最精華得部分,通過靈活地運(yùn)用指針,可以寫出獨(dú)具匠心、構(gòu)思巧妙得程序。

指針基礎(chǔ)

c 語(yǔ)言中指針得實(shí)質(zhì)就是地址

內(nèi)存地址

對(duì)于計(jì)算機(jī)中得內(nèi)存,都會(huì)以字節(jié)為單位,逐一地編上號(hào)碼,這個(gè)編號(hào)就是內(nèi)存得地址,如下圖:

圖中,按字節(jié)給內(nèi)存依次編上了號(hào)碼,其中每個(gè)數(shù)字對(duì)應(yīng)著1個(gè)字節(jié)得內(nèi)存空間,而數(shù)字就是內(nèi)存得地址。

取地址運(yùn)算符"&"

C 語(yǔ)言中,可以用"&"符號(hào)來獲取一個(gè)變量得內(nèi)存地址。只要在變量名前加上"&"符號(hào)就可以獲取變量名所表示得內(nèi)存地址。當(dāng)獲取到變量得內(nèi)存地址后,就相當(dāng)于得到了一個(gè)指向該變量得指針。簡(jiǎn)單地總結(jié)一下:

&變量名 == 該變量得內(nèi)存地址 == 指向該變量得指針

解引用運(yùn)算符“*”

既然可以通過取地址符獲取一個(gè)指向變量得指針。那怎么通過這個(gè)指針再找回原來得變量呢?

這時(shí)候就有了一個(gè)和取地址相逆得操作,我們把它稱為解引用,解引用需要用到星號(hào)“ * ”,它得使用格式為:

*指針

另外,C 語(yǔ)言中,還允許定義專門用于存儲(chǔ)內(nèi)存地址類型得變量,我們將其稱為地址變量,又被稱為指針變量。

指針、指針變量與內(nèi)存地址小區(qū)分

首先內(nèi)存地址是內(nèi)存單元得一個(gè)編號(hào),可以把它當(dāng)成一個(gè)常量看待;指針變量是一個(gè)能夠存放內(nèi)存地址得容器,它是一個(gè)變量;指針是無形得,我們可以把它想象成一個(gè)帶箭頭得長(zhǎng)線,線尾連著指針變量,而箭頭指向了指針變量所保存得內(nèi)存地址處得數(shù)據(jù)。

指針進(jìn)階淺談

由于指針學(xué)起來涉及得內(nèi)容比較多,難度相比其他得也較大,所以下面我只是簡(jiǎn)單地談一談指針變量、指針與數(shù)組,指針與字符串、指針與函數(shù)、二級(jí)指針,權(quán)且當(dāng)做給大家提個(gè)醒,理一理邏輯,要具體學(xué)習(xí)還得自己再編程實(shí)戰(zhàn)中去體悟。

1,指針變量

指針變量也是變量得一種,但它與普通變量有所不同,普通變量存儲(chǔ)得是數(shù)據(jù),指針變量存儲(chǔ)得是內(nèi)存地址。

//指針變量得定義格式數(shù)據(jù)類型 *變量名;

定義指針變量后,不要直接去使用,因?yàn)槭褂觅x予確定內(nèi)存地址得"定義指針"可能會(huì)出大問題。

2,指針與數(shù)組

C 語(yǔ)言中,數(shù)組名所對(duì)應(yīng)得值就是第壹個(gè)數(shù)組元素得內(nèi)存地址,即可以把數(shù)組名看為指向數(shù)組首元素得指針。通過下面得代碼片段理解:

int a[3]={10,20,30};printf("The first element value: %d\n",*a);//輸出為:The first element value: 10

還有什么很多諸如數(shù)組指針,指針數(shù)組等等各種定義,我覺得單純地記他們沒有什么必要,本身用得就不多,就算到了用得時(shí)候,直接問問”度娘“就ok 了

3,指針與字符串

字符串是常量,常量是C

語(yǔ)言中最簡(jiǎn)單得表達(dá)式,而所有得表達(dá)式都是有值得,那字符串常量得值是什么呢?字符串常量得值就是字符串中首字符得內(nèi)存地址。例如 apple

這個(gè)字符串常量得值就是第壹個(gè)字符 a 得內(nèi)存地址。因此我們可以用一個(gè)char 類型得指針指向這個(gè)字符串。

char *ptr = "apple";4,指針與函數(shù)

函數(shù)是擁有特定功能得語(yǔ)句得集合,是構(gòu)成程序得基本模塊。在函數(shù)得定義過程中,可以將指針作為函數(shù)得參數(shù),也可以將指針作為函數(shù)得返回值,甚至可以用指針來指向一個(gè)函數(shù)。

限于篇幅限制,這里就簡(jiǎn)單地提示一下,具體得區(qū)別或找一些具體例子來體會(huì),大家很容易在網(wǎng)上搜集到得~ ~。

5,二級(jí)指針

所謂得二級(jí)指針就是指向指針得指針。其定義格式如下:

數(shù)據(jù)類型 **變量名

指針得實(shí)質(zhì)就是內(nèi)存地址,由于指針變量是可以存儲(chǔ)內(nèi)存地址得變量,因此也可以將其視作指針。而指針變量本身也是變量,需要占用內(nèi)存空間,因此也有內(nèi)存地址。如果將這個(gè)內(nèi)存地址在存儲(chǔ)到另一個(gè)指針變量中,就形成了一個(gè)指向指針得指針,即指向指針得指針就是二級(jí)指針。

定義好二級(jí)指針后就需要對(duì)它進(jìn)行初始化與賦值了

int a = 10;//定義一個(gè)int 類型得變量a,并初始化為10int *pi = &a;//定義一個(gè)int 類型得指針變量pi,并初始化其值為a 得內(nèi)存地址

有了指針變量pi ,下面就可以定義一個(gè)二級(jí)指針并對(duì)其進(jìn)行初始化了,如下:

int **ppi = π//定義二級(jí)指針ppi,并通過取地址符獲取指針變量pi 得內(nèi)存地址,將其初始化給二級(jí)指針ppi6,特殊指針

指針是C 語(yǔ)言得精髓和靈魂。其中有兩種相對(duì)特殊得指針,一個(gè)是空指針,另一個(gè)是void 類型得指針。

int *pi=NULL;//空指針void *pv;//void類型得指針,任何類型得指針都可以被隱式地轉(zhuǎn)換為void類型得指針。因此,它通常作為函數(shù)得參數(shù)出現(xiàn)。

希望對(duì)你有幫助!持續(xù)分享中······

感謝作者分享:博客園丨Charmchin

寫在最后:對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程得小伙伴,如果你想更好得提升你得編程核心能力(內(nèi)功)不妨從現(xiàn)在開始!

編程學(xué)習(xí)書籍分享:

編程學(xué)習(xí)視頻分享:

整理分享(多年學(xué)習(xí)得源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門教程)

歡迎轉(zhuǎn)行和學(xué)習(xí)編程得伙伴,利用更多得資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!

對(duì)于C/C++感興趣可以感謝對(duì)創(chuàng)作者的支持小編在后臺(tái)私信我:【編程交流】一起來學(xué)習(xí)哦!可以領(lǐng)取一些C/C++得項(xiàng)目學(xué)習(xí)視頻資料哦!已經(jīng)設(shè)置好了關(guān)鍵詞自動(dòng)回復(fù),自動(dòng)領(lǐng)取就好了!

 
(文/尚暹茱)
打賞
免責(zé)聲明
本文為尚暹茱原創(chuàng)作品?作者: 尚暹茱。歡迎轉(zhuǎn)載,轉(zhuǎn)載請(qǐng)注明原文出處:http://www.jib360.com/news/show-354642.html 。本文僅代表作者個(gè)人觀點(diǎn),本站未對(duì)其內(nèi)容進(jìn)行核實(shí),請(qǐng)讀者僅做參考,如若文中涉及有違公德、觸犯法律的內(nèi)容,一經(jīng)發(fā)現(xiàn),立即刪除,作者需自行承擔(dān)相應(yīng)責(zé)任。涉及到版權(quán)或其他問題,請(qǐng)及時(shí)聯(lián)系我們郵件:weilaitui@qq.com。
 

Copyright?2015-2023 粵公網(wǎng)安備 44030702000869號(hào)

粵ICP備16078936號(hào)

微信

關(guān)注
微信

微信二維碼

WAP二維碼

客服

聯(lián)系
客服

聯(lián)系客服:

24在線QQ: 770665880

客服電話: 020-82301567

E_mail郵箱: weilaitui@qq.com

微信公眾號(hào): weishitui

韓瑞 小英 張澤

工作時(shí)間:

周一至周五: 08:00 - 24:00

反饋

用戶
反饋