小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

如何理解C語言中的指針概念

 wenming044 2019-04-05

編程的本質就是如何找到地址,取出數據,把數據傳遞給CPU相應的各種寄存器,經過運算,然后把結果傳遞到相應的存儲區(qū)域。所以C語言從編程的角度來說,變量可以分為兩類,一類是指針型(地址型)變量,另一類是普通變量(value值型變量)

好多人說,C語言的精華是指針,可是好多人就是不理解指針!看到一堆復雜的由*和小括號組成的指針就發(fā)暈,無法理解。這種問題產生的本質原因是你對地址型變量的指針的基本概念理解的不茍透徹。本文將幫您解開這個困惑,幫您走入C語言學習的大門。

指針的基本概念

大部分人都會告訴你指針就是地址,其實這種理解是有些片面的,不夠深刻。這也是大部分理解不夠透徹的根本原因。

我們的回答是:

指針本質上是定義一種模型!

一個有效的指針變量一定會包含三最重要的信息:

1、該指針所傳遞的地址值,說白了就是一個整數 int(32位平臺,就是一個4字節(jié)的2進制整數),當然對該地址進行取*操作,就可以獲得該地址上的所存的數據的值。

2、該指針變量所代表的的類型。學究一點的說法是該指針類型所標識的數據結構,這個結構是在定義指針變量的時候確定的。說的更通俗一點,就是該型指針標識的作用范圍。就是該地址的值為起始地址,往后多少個字節(jié)是屬于這個變量的數據。這一點尤其重要,經常會被忽視而搞暈。

3、該指針的名稱。

我們先以最簡單的基本類型為例,予以說明

int* p1;char* p2;

p1定義了一個可以存儲一個int 類型數據的指針變量,作用范圍就是-sizeof(int)的長度,名字為p1。

p2定義了一個可以存儲一個char類型數據的指針變量。作用范圍就是一個字節(jié)的長度-sizeof(char)

見下圖:

如何理解C語言中的指針概念

指針就像一個具有一定測量范圍的游標卡尺

當我們把地址A0(假設地址)傳遞給P1后,該變量就會把指針指向該地址,然后根據自己所能管轄的范圍,向后框住四個字節(jié),然后取值,就是10300610.而且每次都是要固定的框住四個字節(jié)(因為p1是int 類型的指針)。

同理,對于p2來說,每次只能框住1個字節(jié)。當我們把地址A6傳遞給p2 時,得到的就是*p2=11

指針變量的運算

int類型的數據,占用4個字節(jié),本質配意思是這四個字節(jié)當做一個整體來看待,不能拆開。

當p1 做+n(整數)操作時,相當于指針地址指向需要整體移動4*n個字節(jié)單位。p2由于是char*類型的,每加1,代表向后移動一個字節(jié),相應地址也+1。

如下圖所示:

如何理解C語言中的指針概念

可見指針變量的加減操作就像是游標卡尺在左右滑動。所框的范圍里面的值就是需要取得值。

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,不代表本站觀點。請注意甄別內容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內容,請點擊一鍵舉報。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多