歡迎關注awp資訊
指標是c/c++程式語言中的重要概念,但是對於初級程式設計師來說,指標是個比較難理解的概念,下面就從指標的概念入手,一點點解密指標。學習並理解指標首先已經具備基本的程式設計知識,能夠編寫c程式,對於變數知道如何定義並進行運算。
要理解指標首先要對不同資料型別的變數在記憶體中是如何分配儲存的要有個認識,指標的本質也是變數。計算機中的記憶體是如何分布的,從下面的表中開始入手,下表表示一段記憶體,從0位址開始,每個位址代表乙個位元組,表中的0x1001~0x1009表示的這一段位址,其他的位址省略
我們定義兩個變數
int a;
char c;
這兩個變數在記憶體中所佔的記憶體大小分別是多少呢?
int所佔大小為4byte
char所佔大小為1byte
變數所占用的位址大小也是一樣,假設整形變數int a所佔的位址為0x1004~0x1007,字元型變數char c所佔的位址為0x1009在記憶體中的示意如下,變數a的起始位址為0x1004,當在程式中又宣告了乙個字元變數c時,計算機將開闢乙個位元組的空閒記憶體存放變數c,變數c的起始位址為0x1009
;程式執行會找到變數a對應的位址空間,修改存放的值,自增1,a的值變為6,那麼在代表a的這塊記憶體中的值就是6了。
有了以上變數在記憶體中的理解,我們可以思考一下在程式中我們是否可以通過記憶體位址進行操作呢?指標在這時就可以登場了,指標是乙個變數,它存放著另外乙個變數的位址,首先我們假設在記憶體中有乙個整形變數a = 4,另外乙個變數是指標p,p存放著變數a的位址,那麼我們就可以通過操作p來訪問變數a,下面是指標的語法和記憶體示意。
此時我們也可以定義乙個變數b,使指標p指向變數b的位址,比如變數b的位址為0x208,p = &b;p的值為0x208。
對此我們可以用一段**進行理解,如下為**和列印結果。
我們得到的結果就是通過操作指標變數p,完成了對變數a的修改,結果如下:
我們再來看一段關於指標操作的**
&a;//同時宣告和初始化乙個變數
先看一段**,猜想一下列印輸出的值
#include
intmain()
根據上面一節的理解可以知道,p的值為變數a的位址值,但是p+1這裡的值是多少呢?首先分析p是乙個指標變數,裡面的值是a的位址,得到的是下乙個整形資料的位址,也就是在p的值的基礎上增加4個位元組,如果p的位址值是0x1001,那麼p+1的值為0x1005將上面的**列印出來,看看是不是p+1的值比p大4
我們繼續考慮*(p+1)這種運算的結果是多少,這個表達的意思就是下乙個位址的值,但是這裡的值是未知的(未初始化的),使用起來就比較危險,所以使用指標需要小心,指標可以指向任何位址,一不小心可能把系統搞崩潰。最後我們來看一段**,體會一下指標運算的應用。
#include
intmain()
執行結果:
C語言指標的基本概念
指標是一種型別,被稱為 指標型別 指標型別描述的是乙個位址,這個位址指向記憶體中另外乙個物件的位置。簡單地說,指標表示的是它所指向物件的位址。1 比較point,point,point三者的區別 對於int point point 是指標變數的目標變數,即指標指向的那個變數,其內容是資料。2 指標與...
C語言基本概念 指標(一)
指標是乙個變數,其值為另乙個變數的位址,即,記憶體位置的直接位址。就像其他變數或常量一樣,必須在使用指標儲存其他變數位址之前,對其進行宣告。指標變數宣告的一般形式為 type var name type 是指標的基型別,它必須是乙個有效的 c 資料型別,var name 是指標變數的名稱。定義乙個指...
C語言 基本概念
c語言的基本概念 1.格式 型別修飾符 變數名初始值.2.定義變數規則 1 不能以數字開頭.2 由下劃線,字母,美元符,數字組成.3 變數名不能重複.4 不要以拼音命名,特別是拼音簡寫.5 駝峰結構 駝峰命名法.6 不能與系統保留字重名.3.編寫 規範 操作符兩個由空格,逗號後面乙個空格.練習1 定...