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

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

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

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

#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这个数组的地址,第一次解引用得到的是数组,而数组相当于是第一个元素的地址,所以还需要再解引用一次,得到的是这个数组中第一个元素的值
}

输出结果如下:

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

  • 7
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值