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个整型元素组成的。
	          //这个样子的就是一个数组指针。       

我的学习资料分享来啦。

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