五 指標(自己的理解,可能會有誤,麻煩指出,謝謝)

2021-09-26 05:47:24 字數 1224 閱讀 7927

(1)對於指標的理解:指標相當於乙個指示器,指向乙個位址,告訴程式在記憶體的哪個地方可以找到資料。

(2)指標變數的定義

int *p=null;  //定義了乙個指標變數p,p指向乙個記憶體空間,也就是特殊空位址null(其實就是0)
(3)給指標變數賦值

int a=3;   

int *p=&3;

//&是取位址符,即把變數a的記憶體空間位址給了p,也就是將p指標指向a的位址,所以p是a的位址&a,而*p才是a的值3(*是指標操作符)

//可能有點繞,不過我會盡量解釋清楚

//省略標頭檔案等

int a=;

int *p=&a[0];

cout<<*(p+3);

這裡將會輸出乙個整數 13,*(p+3)相當於從a[0]開始往後數三個數,到達a[3]

注意:* p+3和 *(p+3)有區別, * p+3是a[0]+3,而 *(p+3)才是a[3]

(1)指標是動態資料結構,它可以動態地申請空間

int *p=null;    //這裡在定義的時候,p並沒有空間,要通過下一行的語句申請空間

p=new(int); //為p指標申請乙個int型別的空間

這樣做的優勢在於,可以根據需要申請相應大小的空間,在一定程度上優化空間

(2)c++中,陣列名可以作為指標使用

我們還是來吃栗子(這個栗子和上面的差不多)

#includeusing namespace std;

int main(); //這裡要注意,因為a陣列已經賦值為了常量,所以計算機自己會算好大小,不需要寫

int *p=a+4;

cout<<*a《輸出結果

101315

我們來分析一下**

int *p=a+4; //這裡直接將a作為指標,a指向陣列開始的元素10,a+4就是a[4]

cout<<*a《這裡還要注意的是,a陣列作為靜態資料結構是固定不變的,而指標p是動態資料結構,可以變。比如說,a=a+2是不允許的,而p=p+2合法

(關於指標的第三個特點,下午更新)

c 指標(五) 指標的指標

int p 這定義了乙個什麼指標呢?不急不急,慢慢來分析 int a 上條語句我們定義了乙個整型變數 a 首先,我們不妨把 p 和 a 模擬一下,那麼 p 就是乙個整型變數,我們不妨叫這個整型變數 target 按照位址找下去,最終找到的實實在在的int型變數 由於 p target,同時 p p,...

C基礎(五)指標

書目 c程式設計 第三版 表示形式含義a 二維陣列名,指向一維陣列a 0 即0行首位址 a 0 a 0 a 0行0列元素位址 a 1,a 1 1行首位址 a 1 a 1 1行0列元素a 1 0 的位址 a 1 2,a 1 2,a 1 2 1行2列元素a 1 2 的位址 a 1 2 a 1 2 a 1...

C語言學習(五)指標

int main int i 定義整型變數 int 為指向整型資料的指標變數 inta n 定義整型陣列 它有 個元素 int 定義指標陣列 它由 個指向整型資料的指標元素組成 int p為指向含n個元素的一維陣列的指標變數 int f 為帶回整型函式值的函式 int 為帶回乙個指標的函式,該指標指...