指標 陣列 陣列名和陣列名取位址的區別

2021-07-22 07:55:23 字數 1490 閱讀 5476

首先指標陣列 和陣列指標叫法本身是種誤導

指標陣列:

array of pointers,即用於儲存指標的陣列,也就是陣列元素都是指標

陣列指標:a pointerto an array,即指向陣列的指標

其次他們本質乙個是陣列,乙個是指標

int* a[4]     表示是乙個陣列     

陣列a中的元素都為int型指標    

元素表示:*a[i]   *(a[i])是一樣的,因為優先順序高於*

int (*a)[4]   表示是乙個指標     

指向陣列a的指標

元素表示:(*a)[i]  

#include

usingnamespacestd;

intmain()

;

int*a[4];//指標陣列

int(*b)[4];//陣列指標

b=&c;

//將陣列c中元素賦給陣列a

for(inti=0;i<4;i++)

//輸出看下結果

cout<<*a[1]}

///陣列名和陣列名取位址的區別

char a[20];  

void *b,

char *c; 

b=&a; //ok  b可以指向任意型別的指標 

雖然&a和a得記憶體位址相同

,但它們的意義不相同,它是代表整個陣列的,

它的高階單位是整個陣列的位元組長度

c=&a;  //err &c返回的是乙個指向char陣列的指標, 而c是乙個指向char字串的指標

c=(char*)&a; //可以強轉

c=a;  //ok  指向陣列的首元素的位址 即&a[0] 是乙個指向char元素的指標

a的型別是int[5]  

陣列&a的型別是int(*)[5]  

指標——指向int[5]陣列的指標

&a[0]的型別是int*  

指標——指向int型別的指標

#include

int main()

結果 1244736

1244736

1244740

1244740

1244740

1244756

1244740

---------------204

陣列名和陣列名取位址

在c中,在幾乎所有使用陣列的表示式中,陣列名的值是個指標常量 也就是陣列第乙個元素的位址。它的型別取決於陣列元素的型別 如果它們是int型別,那麼陣列名的型別就是 指向int的常量指標 在以下兩種場合下,陣列名並不是用指標常量來表示,就是當陣列名作為sizeof操作符和單目操作符 的運算元時。siz...

陣列名和陣列名取位址

1 int a 10 2 int p a 3 int q 10 a 第二個為指向陣列的指標.a只是a 0 的位址,a 1就是a 1 的位址了,a是整個a 10 的首位址,是以整個陣列為角度來看,雖然它與a 0 的值相同,但是 a 1就已經增加了10個int型別的位元組的長度了.1 include 2...

陣列名和陣列名取位址 指標陣列和陣列指標的區別

一,首先我們先分析下陣列名和陣列名取位址的區別。我們都知道陣列名是陣列的首位址,然而對陣列名取位址又是什麼那?看下面一段程式你就會懂的。分析 由執行結果可知,陣列名a和 a的記憶體位址相同,我們已經知道a a 0 所以有a 1指向陣列中下乙個元素 即為在首位址2751180基礎上加int的位元組數4...