C++ 指針數組 數組指針 今天弄懂它們吧。

數組和指針

兩個很煩的東西。我在這兩篇文章裏面有對這些問題的詳細描述。
把數組、結構體等都看成是一種數據類型!
關於指針的知識回顧
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個整型元素組成的。
	          //這個樣子的就是一個數組指針。       

我的學習資料分享來啦。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章