C++语言中数组指针和指针数组彻底分析
近来在论坛中机场经常看到有关数组指针和指针数组的讨论。这个是学****c++等语言中不可少的步骤,
不过向来指针的东西就是很有用但是也是很难用的东西,所以学****起来也不是很容易了。近来本人也没有什么项目可以做的,所以就随便写的自己关于这些方面的理解,供同行参考,同时也可以把自己的错误理解暴露在阳光下,接受大家评判的洗礼。
file://Powered By ZosaTapo
file://******@263.net
################################
#? #
# 基本知识 #
#? #
################################
当然我们一切都是从最简单的内建类型开始,最后我会做一些推广。
先看一下基本的形式,我们从这里起步!
--------------指针----------------
int a=10;
int *p=&a;
-------------指针的指针-----------
int b=20;
int *p=&b;
int **p2p=&p;
-------------简单数组-----------------
int c[10];//整数数组,含有10个整数元素
? file://也就是说每一个元素都是整数
?
--------------指针数组--------------------
int *p[10];//指针数组,含有10个指针元素
?
file://也就是说每一个元素都是指针
?
--------------数组指针--------------------
int (*p)[10];//数组指针,这个指针可以用来指向
file://含有10个元素的整数数组
上面这些简单的形式是我们必须要首先理解,这个是基本的知识。
同时我们从上面也要得出一个很重要的知识提示:c++语言层面上
关于变量声明的部分,后缀结合变量的优先级比前缀要高的。
看我们上面的例子的最后两个就明白了,我们为了实现数组指针的
声明我们不得不变通一下。我们采用()来实现优先级的改变,实现了
数组指针的声明。
################################
#? #
#? 进一步提高知识? #
#? #
################################
数组,数组的指针,指针的数组,概念太多了。我接受概念一多的
时候,我就想把这些复杂的东西简单一下。因为我太懒了,概念简化
一下,记住更容易一点。所以我们这里要认识一下上面这些概念本质。
这样可以简化概念,减少记忆的难度。
先看一段程序。
#include
#include
using namespace std;
int main()
{
?int vInt=10;
?int arr[2]={10,20};
?
?int *p=&vInt;
?int **p2p=&p;
?
?int *parr[2]={&vInt,&vInt};
?int (*p2arr)[2]=&arr;
?cout<
?cout<
?cout<
?cout<
?cout<
?cout<