陣列和指標的區別(a和 a以及 a 0 的區別)

2021-07-11 08:37:37 字數 990 閱讀 8028

一、一維陣列

*這裡記住陣列的首位址和陣列首元素的位址是不一樣的,雖然他們的值是一樣的,但是代表的意思不一樣;

*陣列  int a[5];

*      a是陣列的共五個整形資料的記憶體的名字,是一塊連續的位址的名字;

*      a代表首元素的位址同&a[0]是一樣的;所以a+1代表的是第二個元素的位址

*      &a則是整個記憶體空間的位址,所以&a+1代表的是陣列之後的另一塊陣列的首位址,已經超過陣列a了,則*(&a + 1)越界

*   a 、 &a  、 &a[0]的值是一樣的,但是代表的意義不同

*  a 和 &a[0]都是代表首元素的位址,+1 之後都是a[1]的位址,所以*(a+1)表示a[1]的值

*  &a 則代表整個陣列的記憶體位址,+1 之後越界到陣列外面去了

例子:

#include

using namespace std;

int main() ;

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

cout << *(a + 1) << "  " << *(ptr-1) << endl;

system("pause");

return 0;

二、二維陣列

int a[3][2] = ;

cout << *(*(&a[0] + 1)) << "   " << *(*(&a[0] + 1) + 1) << endl;

//a[0]是第一組元素,算乙個元素,也是位址,所以&a[0]是乙個二重指標;那麼後面就需要兩重間訪

//又因為陣列中a 和 &a[0]意思相同,都是第乙個元素的位址(不同於&a是整個陣列的首位址)

//所以上面還可以寫成*(*(a+1)+1)的形式都是表示的a[1][1];

cout << *(*(a+1)+1) << endl;

a 0 和 a 0 的區別

在c語言的使用過程中,會經常遇到與字元 0 進行運算的情況,那他們的區別是什麼,我在這個地方將它們記錄下來 在ascii表中,可以查到字元 0 對應的十進位制數為48.然後進行如下的運算。int a 49 char b a printf a c n a printf b d n b printf a...

陣列和指標 以及 指標和引用 的區別

1 概念不同2 空間分配 陣列是靜態分配,且分配的空間是連續的 指標是動態分配,分配的空間不一定是連續的。3 大小不同 求sizeof 陣列 陣列所佔儲存空間的記憶體 sizeof 陣列名 陣列的大小 sizeof 陣列名 sizeof 資料型別 指標 在32位平台下,無論指標的型別是什麼,size...

陣列指標和指標陣列的區別

陣列指標 也稱行指標 定義 int p n 優先順序高,首先說明p是乙個指標,指向乙個整型的一維陣列,這個一維陣列的長度是n,也可以說是p的步長。也就是說執行p 1時,p要跨過n個整型資料的長度。如要將二維陣列賦給一指標,應這樣賦值 int a 3 4 int p 4 該語句是定義乙個陣列指標,指向...