分享
 
 
 

补充内容:C++语言中数组指针和指针数组彻底分析

王朝vc·作者佚名  2006-01-08
窄屏简体版  字體: |||超大  

上一次我们主要说明数组,指针,指针数组,数组指针这几个很基本的概念,

不过有一点上一次我没有提及,那就是我们使用typedef定义指向数组指针

的数组,这个叫法是不是很拗口呀,不过我们看具体的程序就清楚了。

file://----------数组--------------

int a[2]={10,20};

int b[2]={30,40};

file://简单的指向两个元素数组的指针

int (*p2arr)[2]=&a;

file://---------注意这里的变化--------

file://这里我们声明简单的类型P2ARR.可以这样描述

file://P2ARR是一种用户自定义的类型。她的功能描述

file://是用来描述整数数组的,这个数组只能含有两个元素

typedef int (*P2ARR)[2];

P2ARR pp=&b;

pp=p2arr;//类型一致

file://这里我们定义指向指向数组指针的数组

P2ARR ap2a[2]={&a,&b};

file://如果我们采用下面的写法则是错误的,原因看下面分析

file://P2ARR ap2a[2]={a,b};//------错误写法-------

---------还有一点注意----------------

有人可以能会说,定义数阻指针的数组,下面这样的形式

好像也可以做到的。

int (*p2arr)[2][2];

咋一看,好像是的,但是仔细想想。原来上面是定义

一个指针,这个指针是指向二维数组的指针,还是

数组指针,而不是数组指针数组。这一点,应该很容易明白的。

上一次我讲到int []数组声明与int *类型在函数参数等方面转换的例子。

这里有一点补充的,我们实际上现在还是不清楚数组来C++编译器层面的

表示,也就是我们不知道编译器使用什么样的结构形式来表示数组的。所以

上面这些转换只能转换而已,我们不能有更多的假设。

----------我的想象,我的猜想--------

我是这样相像的,C++采用类似JAVA中Array类的形式来管理数组。当然其中

有许多c++语言的特征,比如operator *,operator ->等重载,但是这些类型

转换运算符的使用,只有编译器认为需要的时候才会调用的,因为数组表示本身

就是编译器内部结构的嘛。目前到这里,我们也只能认为在函数参数使用等情况

下才发生int []到int *的转换。

看下面的程序。

#include <iostream>

using namespace std;

void change(int pa[],int index)

{

pa[index]=200;

}

int main()

{

int a[3]={1,2,3};

change(a,0);//这里编译器已经把 int a[3],转换成int *指针传给了函数

file://这个是语言实现细节,请参考《the c++ programming language》

cout<<a[0];

return 0;

}

但是我们上面的标注行

//P2ARR ap2a[2]={a,b};//------错误写法-------

则是应该这样理解:数组就是数组,指针就是指针,虽然编译器需要的时候

会进行一定的转换,但是我们不能认为那些转换是“想当然“的。

上面这一行,编译器就没有为我们进行类型转换的,所以我们要自己动手了。

//P2ARR ap2a[2]={&a,&b};//------正确写法-------

上面这些文字,主要一点就是说明了,有些行为是编译器完成的,而且还有一些

诡秘。但是我们要知道编译器做了那些,那些是要完成自己做的。重要的一点,

就是我们学会如何去简单使用typedef定义类型.

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有