指標和陣列

2021-06-27 13:13:09 字數 1870 閱讀 2753

1,指標就是指標,指標變數在32位系統下,佔4個位元組,其值為某 個記憶體的位址。可以指向任何地   方。

2,陣列就是陣列,其大小與元素的型別和個數有關;定義陣列時,必須指定元素的型別個元素的個數;    陣列可以存放任何資料型別,但

不可以存放函式。

3,它們之間沒有任何的關係,只是穿著相似的衣服來逗你玩罷了。

4,以指標的形式訪問指標和以下標的形式訪問指標

char* p = "abcdef";

b,這塊記憶體沒有名字,對這塊記憶體的訪問完全是匿名訪問。

c,可以通過*(p+4)指標的形式,取出p裡儲存的位址值,再加上4個字元的偏移量,最後取出該位址           值對應的值。

d,也可以通過p[4]下標的形式,但編譯器最終會解析成c中的形式,本質上是相同的,只是寫法不             同罷了。

5,以指標的形式訪問陣列和以下標的形式訪問陣列

char a = "123456";

a,定義了乙個陣列a,a擁有7個char型別的元素,其空間大小為7.陣列a本身在棧上面。

b,對a的元素的訪問必須先根據陣列的名字a找到陣列首元素的首位址,然後根據偏移量找到相應            的值。即:『具名+匿名』訪問

c,如果要訪問5,以指標的形式:*(a+4),a這時候代表的是陣列首元素的首位址,訪問的方式同4             中的 c。

d,要是以下標的形式,a[4],道理同4中的d。

6,由4,5可以得出,指標和陣列根本就是兩個完全不一樣的東西,它們都可以「以指標的形式」或「以下標    的形式」進行訪問。

乙個是完全匿名,乙個是具名+匿名。

7,陣列a[4],這裡的a和&a兩者有什麼區別?  看下面的例子。

main()

;

int* p = (int*)(&a+1);

printf("%d,%d",*(a+1),*(p-1));

}

a,(&a+1),表示下乙個陣列的首位址,顯然當前指標已經越過了陣列的界限

b,(int*)(&a+1),把上一步得出來的位址進行強制轉化,轉化為(int*)型的,並將其賦給p

c,*(a+1):a和&a的值是一樣的,但意思不一樣,a是陣列首元素的首位址,&a是陣列的首位址,               a+1是 下乙個元素的首位址,

d,*(p-1)因為p是指向a[5],並具p是int*型的,所以*(p-1)是指向a[4],輸出5.

指標陣列和陣列指標

有關陣列指標和指標陣列容易混淆,本文舉例說明兩者的區別,並加以分析。基本概念 指標 inta 1 int p a 指標的指標 int p2p p 簡單陣列 intb 20 指標陣列 int p 10 指標陣列,含有10個指標元素,即每乙個元素都是乙個指標 陣列指標 int p 10 這個指標用來指向...

指標陣列和陣列指標

理解這兩個概念,當從語言學的語法角度開始,定語 名詞,即 的 語句。指標陣列 指標的陣列 陣列指標 陣列的指標。一 指標陣列 元素為指標的陣列 顧名思義,就是說的首先是乙個陣列吧,然後陣列的元素是指標而已。說明形式為 type pointer array constant1 constant2 co...

指標陣列和陣列指標

該文時自己對指標陣列用法的一點總結,還望高手指點不足原文如下 由於以前對指標陣列不太明白,所以自己寫了 乙個小的測試程式來驗證了自己的猜測,先總結如下 指標陣列,由名字就可以知道的該陣列中的成員都是為指標的。其定義的方法為 char p 5 該初定義乙個包含5個char 型別的陣列的指標,由於p本身...