C++基础:指针数组和数组指针(大白话讲解)

指针数组:本质上是一个数组,数组中的每一个元素都是一个指针;

数组指针:本质上是一个指针,数组指针是一个指向数组的指针。

为了更直观的分析他们的区别,我举个例子:

#include
#include
#include
using namespace std;
int main(void) {
	int arr[2] = { 0,1 };  //定义一个数组

	int* a1[2];  //定义一个指针数组,数组中的每一个元素都是一个指针
	a1[0] = &arr[0];     //将arr数组的第一个元素的地址赋值给指针数组的第一个指针
	a1[1] = &arr[1];     //将arr数组的第二个元素的地址赋值给指针数组的第二个指针
	cout << "a1的数值是: " << a1 << endl;   //这里输出的是数组arr[0]的地址
	
	int(* a2)[2]; //定义一个数组指针,指针指向的是某一数组的地址。
	a2 = &arr;           //将arr数组的地址赋值给指针a2
	cout << "a2的数值是: " << a2 << endl;   //这里输出的是数组arr的地址
	cout << "**a2的数值是: "<< **a2 << endl;  //注意,这里a2指向的是arr这个数组的地址,第一次解引用得到的是数组,而数组相当于是第一个元素的地址,所以还需要再解引用一次,得到的是这个数组中第一个元素的值
}

输出结果如下:

好了,今天的干货就分享到这里,有什么我没有表达清楚的地方欢迎大家提出,我会认真回答大家的所有问题,我们一起学习一起进步! 

你可能感兴趣的:(c++,算法,开发语言)