一維數(shù)組
在c和c++中數(shù)組的指針就是數(shù)組的起始地址(也就第一個元素的地址),而且標準文檔規(guī)定數(shù)組名代表數(shù)組的地址(這是地址數(shù)值層面的數(shù)組表示)。例如:
int a[10];
int *p;
p=&a[0]//和p=a是等價的。
因為a是數(shù)組名,所以他是該數(shù)組的地址,同時因為第一個元素為a[0],那么&a[0]也代表了該數(shù)組的地址。但是我們是不是就說一個數(shù)組名 和該數(shù)組的第一個元素的&運算是一回事呢?在一維的時候當時是的,但是在高維的時候,我們要考慮到維數(shù)給數(shù)組帶來的影響。
a[10]是一個數(shù)組,a是數(shù)組名,它是一個包含10個int類型的數(shù)組類型,不是一般的指針變量噢!(雖然標準文檔規(guī)定在c++中從int[]到 int*直接轉換是可以的,在使用的時候似乎在函數(shù)的參數(shù)為指針的時候,我們將該數(shù)組名賦值沒有任何異樣),a代表數(shù)組的首地址,在數(shù)字層面和a[10] 的地址一樣。這樣我們就可以使用指針變量以及a來操作這個數(shù)組了。
所以我們要注意以下問題:
p[i]和a[i]都是代表該數(shù)組的第i+1個元素;
p+i和a+i代表了第i+1個元素的地址,所以我們也可以使用 *(p+I)和*(a+I)來引用對象元素;
p+1不是對于指針數(shù)量上加一,而是表示從當前的位置跳過當前指針指向類型長度的空間,對于win32的int為4byte;