- N +

c語言指針簡單例子,c語言指向指針的指針

大家好,如果您還對c語言指針簡單例子不太了解,沒有關(guān)系,今天就由本站為大家分享c語言指針簡單例子的知識,包括c語言指向指針的指針的問題都會給大家分析到,還望可以解決大家的問題,下面我們就開始吧!

C語言指針到底是什么,該怎么用呢

在C語言中我們可以認為指針就是地址,不過是某一個具體內(nèi)存單元的地址。

如我們在c語言中定義了一個int型變量a:

inta;

那么計算機就會給a分配4個字節(jié)的地址(在vc++中,在某些版本的c語言中,可能是2個字節(jié))來存放a的值。由于在內(nèi)存中每個字節(jié)都有一個地址,那么哪個地址是a的地址呢?我們不能同時用4個地址來表示a的地址吧,所以在c語言中,我們拿這塊空間(4個字節(jié))的第一個字節(jié)的地址當作變量a的地址,也就是首地址。

然后我們在定義一個指針變量,如:

int*p;

再用取地址運算符把a的首地址取出來賦值給指針變量p,如:

p=&a;

現(xiàn)在指針變量p里存放的就是a的地址,我們就稱p是a的指針。

C語言中的指針該怎么理解書上太難懂了,你能畫圖舉例說下基本的指針操作嗎

謝謝邀請。

“指針是C語言的靈魂,指針可以直接操作內(nèi)存,指針使C語言程序更加高效”,等等等等。相信C語言初學者學到指針時,會看到很多這樣描述指針的話,但是卻往往一頭霧水。

其實C語言的指針并沒有什么難的,將其看做是一種類似于char、int的基本數(shù)據(jù)類型就簡單了。

我在上個問答中提到C語言中的不同的基礎(chǔ)數(shù)據(jù)類型主要區(qū)別之一就是占用的存儲空間不同,程序是運行在計算機的內(nèi)存中的,因此C語言程序的變量也是存在于內(nèi)存中的。

C語言標準規(guī)定char類型占用一個字節(jié)的存儲空間,對其他整型卻沒有做規(guī)定,現(xiàn)在為了解釋的方便,我們假設(shè)int類型的數(shù)據(jù)占用內(nèi)存4個字節(jié)。

假設(shè)我們?nèi)缦露x了兩個變量:

那么,i占用了1字節(jié)的內(nèi)存空間,j占用了4字節(jié)的內(nèi)存空間,請看下圖。

方框表示內(nèi)存空間,內(nèi)部表示存儲的值。我們把內(nèi)存逐字節(jié)編號,方框外部的數(shù)字表示方框的編號(這樣的內(nèi)存“編號”即所謂的“內(nèi)存地址”)。

修改變量i的值,實際上就是修改地址為4000的內(nèi)存空間里的值。那反過來呢?如果我修改了地址為4000的內(nèi)存空間里的值,i的值會相應改變嗎?答案是肯定的,請繼續(xù)往下看。

上圖中的內(nèi)存地址“4000”是我為了解釋方便隨意取的。那么,在實際應用中,變量i的地址如何獲取呢?C語言提供了“&”運算符,就是獲取變量地址的。請看下面的例子:

我們?nèi)〕隽薸的地址,把它強制轉(zhuǎn)換為long型,傳遞給p1了。編譯并執(zhí)行這段C語言代碼,得到如下輸出:

發(fā)現(xiàn)變量i的地址被打印出來了,這說明,C語言程序變量的地址也是一個整數(shù)。

按照上面的說法,修改i的值除了直接對i賦值以外,還可以通過修改p1地址處的內(nèi)存空間里的數(shù)值。那,怎樣才能“通過修改p1地址處的內(nèi)存空間里的數(shù)值”修改i的值呢?

上面的代碼實例中使用了long型變量p1存儲了i的地址。事實上,C語言有專門的數(shù)據(jù)類型存儲地址(即所謂的指針),定義方式也很簡單,就是:“類型描述符*”,例如,可以定義以下變量存儲地址:

p1和p2就是C語言中所謂的指針類型,因為i是signedchar類型的,所以定義了signedchar*類型的指針存儲i的地址。j是int類型的,所以定義了int*類型的指針存儲j的地址。

另外,C語言提供了“&”運算符取變量地址,與之對應的,還提供了“*”運算符從相應地址內(nèi)存里取出數(shù)值。

了解了C語言的指針類型和“*”運算符,現(xiàn)在來看看如何“通過修改p1地址處的內(nèi)存空間里的數(shù)值”修改i的值。請看如下C語言代碼:

編譯并執(zhí)行,得到如下輸出:

編譯運行,發(fā)現(xiàn)程序輸出“i=5”,這一值實際上就是通過指針修改的。可以看出,C語言中的指針并沒有什么難的。

在定義變量時,”*“放在變量符號前,可以定義指針變量。在定義完指針變量后,“*”放在變量前,就表示從地址取值的運算符了。另外,“*”還可以表示乘法運算符,讀者自己思考什么情況下,“*”表示乘法運算符。

可以看出C語言中的指針一點也不神秘。題主可以點我主頁,查看我之前的文章,了解更多指針問題:比如為什么int類型的變量j的地址要使用int*p2;定義,而不能使用signedchar*p2;定義,使用指針為何能寫出緊湊、高效的C語言程序等等。

歡迎在評論區(qū)一起討論,質(zhì)疑。文章都是手打原創(chuàng),每天最淺顯的介紹C語言、linux等嵌入式開發(fā),喜歡我的文章就關(guān)注一波吧,可以看到最新更新和之前的文章哦

C語言的指針有什么用

指針是C語言中一個重要的概念,可以用來間接操縱變量和數(shù)據(jù)結(jié)構(gòu)。主要的用途有以下幾個方面:

內(nèi)存管理:指針可以用來管理內(nèi)存,包括動態(tài)內(nèi)存分配和釋放,以及操縱和存儲數(shù)據(jù)結(jié)構(gòu)等。

傳遞引用:指針可以傳遞變量的引用而不是值,這樣可以有效地減少內(nèi)存使用和運行時間,并且使函數(shù)調(diào)用更加高效。

操作數(shù)據(jù)結(jié)構(gòu):指針可以被用來操縱各種數(shù)據(jù)結(jié)構(gòu),如鏈表、樹、堆棧等,可以方便地進行數(shù)據(jù)操作。

函數(shù)返回:指針可以用作函數(shù)的返回值,可以返回結(jié)構(gòu)體和動態(tài)分配內(nèi)存的數(shù)組等數(shù)據(jù)結(jié)構(gòu)。

字符串處理:指針可以用來處理字符數(shù)組和字符串,可以有效地訪問和操作這些數(shù)據(jù)類型。

因此,指針是C語言中非常重要的一個概念,它提供了許多強大的功能,可以用來管理內(nèi)存、優(yōu)化代碼、操作數(shù)據(jù)結(jié)構(gòu)等。無論是系統(tǒng)程序、底層程序還是應用程序,指針在C語言的編程中都有著廣泛的應用。

c語言指針到底有什么用

C語言中指針有以下三種用途:

1.

指針的使用使得不同區(qū)域的代碼可以輕易的共享內(nèi)存數(shù)據(jù),這樣可以使程序更為快速高效;

2.

C語言中一些復雜的數(shù)據(jù)結(jié)構(gòu)往往需要使用指針來構(gòu)建,如鏈表、二叉樹等;

3.

C語言是傳值調(diào)用,而有些操作傳值調(diào)用是無法完成的,如通過被調(diào)函數(shù)修改調(diào)用函數(shù)的對象,但是這種操作可以由指針來完成,而且并不違背傳值調(diào)用。

c語言中哪三種運算可以移動指針

對指針變量加一個整型常量,指針賦值,對指針變量減去一個整型常量

關(guān)于c語言指針簡單例子和c語言指向指針的指針的介紹到此就結(jié)束了,不知道你從中找到你需要的信息了嗎 ?如果你還想了解更多這方面的信息,記得收藏關(guān)注本站。

返回列表
上一篇:
下一篇: