1。int a[5]
a是陣列首元素的位址,乙個常量指標,步長是乙個元素的長度即int-4個位元組
&a是陣列的位址,在數值上與a-首元素的位址相等,但是步長是整個陣列的長度5*4個位元組
所以在數值上 a == &a 但是a+1 != &a+1 a+1移動四個位元組,&a+1移動5*4個位元組
2.int (*p)[5]
p是乙個指向int [5] 型別的指標,步長為int [5] 的大小,即5*4個位元組
p=&a;
(*p)即為a,(*p)[1]即為a[1]
3.int *p 是乙個指標陣列,元素是 int *
三種二級指標
第一種:char *p=; p是指標陣列, 注意與 char (*p2)的區別,p2是乙個指向char 的指標
棧區開闢一段5*4個位元組的記憶體存放指標陣列存放指標,指向全域性區的「111」,「222」,「333」
第二種:char p3[3][4]=;
在棧區開闢了一段3*4個位元組的連續記憶體,存放"111"……
第三種:char **p4=(char **)malloc( 3*sizeof(char *) );
for(i=0;i<3;i++)
(在棧區宣告乙個4個位元組的)指標變數p4,指向堆區開闢的
3個 sizeof(char *) 個位元組的記憶體,這三個記憶體也存放指標,p4是首位址,3個指標分布 指向 堆區再次開闢的
4*sizeof(char)個位元組的記憶體
與第一種記憶體空間相似
指標陣列長度 sizeof(p)/( sizeof(*p) )
但是 void func(char *p)
一級指標 二級指標 指標和陣列 指標陣列
一級指標 int p 上述 定義了乙個一級指標變數,int為基型別。指標變數的基型別用來指定此指標變數可以指向的變數的型別。一級指標變數也就是儲存著另外乙個變數位址的變數 在定義指標時應注意指標變數必須指定基型別。且必須給指標變數賦初值,在不確定該指標變數要指向什麼的時候應該給其賦null,否則該指...
一級指標 二級指標 指標和陣列 指標陣列
一級指標存放的是變數的位址 一級指標名就可以等於這個位址 二級指標存放的是一級指標的位址,同樣指標名就是這個位址 陣列指標是乙個指標 它所存放的位址是陣列變數的位址,即指向不同陣列 所以說一級指標 二級指標 陣列指標都是指標,只是型別不同 而指標陣列,是乙個陣列,他存放的資料型別是指標型別 p是指標...
一級指標 二級指標 指標和陣列 指標陣列總結
1.指標 指標是個變數,用於存放記憶體單元的位址 編號 2.一級指標 舉例 int a 8 int p a p是乙個一級指標,它存放的是變數a的位址,對p解引用得到的就是a的值。int a 3 int p a 這裡的p也是乙個一級指標,存放的是陣列的首位址,陣列名就是陣列的首位址,對p解引用得到的是...