數組和指針
兩個很煩的東西。我在這兩篇文章裏面有對這些問題的詳細描述。
把數組、結構體等都看成是一種數據類型!
關於指針的知識回顧
C/C++ 變量的本質及數據類型雜記
其實在前面的文章裏面關於這兩個知識點解釋的很清楚,但是文章太長,很多人懶得看。在這裏就這兩個問題,重點解釋一下。
指針數組
它是一個數組,指針只是一個修飾詞。
就像這句話,一朵美麗的花,首先它是花,美麗的是修飾詞。
int main() {
int* pa[5]; //pa是數組,每個元素都是指向整型的指針。
//這個樣子定義的就是指針數組。
int a1 = 1;
int a2 = 2;
int a3 = 3;
int a4 = 4;
int a5 = 5;
pa[0] = &a1; //給每個元素賦值。
pa[1] = &a2;
pa[2] = &a3;
pa[3] = &a4;
pa[4] = &a5;
for (auto p : pa) {
cout << *p << endl;
}
return 0;
}
輸出是:
數組指針
它是一個指針,指向一個數組。
int main() {
int a[5] = { 1,2,3,4,5 };
int(*pa)[5]; //pa是指針,指向一個數組。這個數組是由5個整型元素組成的。
//這個樣子的就是一個數組指針。
cout << a << endl;
cout << &a[0] << endl;
pa = &a; //a是第一個元素的地址,這裏取的是第一個元素的地址的地址,即數組的地址。
for (int i = 0; i < 5; i++) {
cout<< *(*pa + i)<<endl;
}
return 0;
}
輸出是:
總結
int* pa[5]; //pa是數組,每個元素都是指向整型的指針。
//這個樣子定義的就是指針數組。
int(*pa)[5]; //pa是指針,指向一個數組。這個數組是由5個整型元素組成的。
//這個樣子的就是一個數組指針。