指针数组:本质上是一个数组,数组中的每一个元素都是一个指针;
数组指针:本质上是一个指针,数组指针是一个指向数组的指针。
为了更直观的分析他们的区别,我举个例子:
#include<iostream>
#include<string>
#include<fstream>
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这个数组的地址,第一次解引用得到的是数组,而数组相当于是第一个元素的地址,所以还需要再解引用一次,得到的是这个数组中第一个元素的值
}
输出结果如下:
好了,今天的干货就分享到这里,有什么我没有表达清楚的地方欢迎大家提出,我会认真回答大家的所有问题,我们一起学习一起进步!?