中文字幕理论片,69视频免费在线观看,亚洲成人app,国产1级毛片,刘涛最大尺度戏视频,欧美亚洲美女视频,2021韩国美女仙女屋vip视频

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
C語言的靈魂|“指針”

什么是指針?從根本上看,指針是一個值為內(nèi)存地址的變量。

——《C primer plus》

指針,一直都是C語言的重點。初學(xué)C的人可能只是知道,它是變量的地址,但卻不知道,學(xué)這個變量的地址有什么用。指針的偉大之處其實并不在語言本身,而是在于它和結(jié)構(gòu)體搭配產(chǎn)生的一種叫數(shù)據(jù)結(jié)構(gòu)的東西。如鏈表隊列棧,樹圖等。所以,雖然在現(xiàn)在指針用到的地方不多,但還是要好好掌握這個知識。

&和*

在我們之前有學(xué)到那么一個運算符是&取地址符,它的作用是返回變量的地址,我們現(xiàn)在要獲取一個變量的地址,讓它賦值給一個指針變量,可以這樣子操作。

1inta=0;

2int*p=&a;

這樣我們就把a的地址賦值給了p這個指針變量,注意指針變量是p而不是*p。上面也代表著p這個指針變量指向了a。如果你想聲明double類型的指針就可以把上面兩個都換成double。為什么都要換掉,去區(qū)分開不同類型的指針呢?每個指針變量的空間大小都是一樣的,因為它只是儲存地址,都是指針變量。既然用到的空間一樣,那我們指針就指針唄,要區(qū)分int,double指針干嘛。這個問題我們留到下面指針的加法來討論。

指針的存儲

指針是按照16進(jìn)制儲存在指針變量中的,用%p對一個指針變量進(jìn)行printf操作,可以得到指針的16進(jìn)制地址。

這樣子,就是把p所指的內(nèi)容a賦值給了x。

1printf('%p',p);

指針的操作

對于* 這個運算符,用在聲明的時候表示的是聲明一個指針變量,就像上面那樣。聲明了一個int型的指針變量。

除了聲明之外,用*對一個變量進(jìn)行操作就可以對它地址上的內(nèi)容,也就是這個指針?biāo)傅淖兞窟M(jìn)行操作。如賦值:

1intx=*p;

這里我們就將p這個指針變量所指向的內(nèi)容。如果p指向的是a變量,那么給x賦值的就是a的值。

解引用后的四則運算

1(*p)=(*p)+1;

為什么要括號呢,因為在這里我們可以更加直觀的看出,是p指向的指針在進(jìn)行加法而不是p這個指針變量在進(jìn)行加法。

指針與一維數(shù)組

在上一篇的數(shù)組中,我們講到了數(shù)組名是數(shù)組的地址,而在這篇文章中,我們又提到了指針是一個儲存地址的變量,那這樣的話,數(shù)組和指針是有關(guān)聯(lián)的。

如果我們要數(shù)組第一個元素的地址,可以如下

1inta[10];

2int*p=&a[0];

如果我們要數(shù)組的地址,可以如下

1int*q=a;

我用%p打印出來出來后是下面這兩個(不同機器的地址會和這里不一樣)

1000000000065FE20

2000000000065FE20

雖然它們的地址是一樣的,但是這兩個指針的類型是不一樣的,第一個指的是數(shù)組的第一個元素的地址,第二個指的是整個數(shù)組的地址。

指針+整數(shù)

當(dāng)給指針加上整數(shù)的時候,因為指針指的是地址,所以當(dāng)我們用指針加整數(shù)的時候就是原來的地址加上指針類型*要加的整數(shù)。

就拿一個小區(qū)來說,每個房子之間的距離是4米(模擬int的字節(jié)數(shù))。如有一家的門牌號是3。你給地址加一個數(shù)字,它的地址會加上4乘上這個小區(qū)的房子距離。就會是第4個門牌號的房子的地址。

如果你在另一個小區(qū),房子間的距離比較大了,為8米(模擬double的字節(jié))。也是假如有一家的門牌號是3。你給地址加一個數(shù)字,那么這個時候,給地址加上的應(yīng)該是這個小區(qū)的房子距離8乘以加的數(shù)字。才可以得到準(zhǔn)確的房子地址。

這就為什么我們要區(qū)分不同的指針類似了。在兩個小區(qū)中,計算一開始的地址都是3,但是因為小區(qū)的房子間距不一樣,所以它們需要加的那個數(shù)字就會因為這個距離而變化,不只是看這個整數(shù)。

舉一個數(shù)組和指針的例子

1inta[10];

2printf('%d',*(a+3));

以上會打印出a[3]這個變量,因為我們在解引用前先對指針+3,讓它移動到了a[3]的位置。給他解引用后就是a[3]的值了。

指針減整數(shù)

這個指針減去整數(shù)就和上面的指針加整數(shù)差不多,就是減去指針類型*要減的整數(shù)。要注意的是當(dāng)它用在數(shù)組名上時,不要讓指針指在數(shù)組外面。

指針減指針

可以想一下,當(dāng)兩個門牌號相減的時候會得到什么?是兩個房子的門牌號之差,而不是兩個房子的距離。這里要注意的是,指針減指針一般是用在數(shù)組中,例如

1inta[10]

2intx=&a[3]-&a[0];

這就是指針的一些基本知識了,關(guān)于二維數(shù)組用指針表示,這里不多寫了。如果你覺得不懂這二維數(shù)組和指針的關(guān)系的話,或者對于文章內(nèi)容有什么建議,可以關(guān)注我,我來替你解答!

“全球最大的C/C++人員聚集地就在我這里,企鵝裙餿直播編程學(xué)習(xí),【14】就是我的。不管你是什么基礎(chǔ),來了就是兄弟,是兄弟就跟我一起學(xué)習(xí)C/C++!關(guān)注我,為編程點贊,每天學(xué)點小知識!工作需要、感興趣、為了入行、轉(zhuǎn)行需要學(xué)習(xí)C/C++的伙伴可以跟我學(xué)習(xí),技術(shù)大牛、學(xué)習(xí)資料等助你早日成為一名優(yōu)秀的程序員!

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
C/C++知識教程:指針
深入理解C語言指針的奧秘(3)
c語言要背的
UC頭條:C語言學(xué)習(xí)分享(第三次)
第8章 指針
指針數(shù)組與數(shù)組指針
更多類似文章 >>
生活服務(wù)
熱點新聞
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服