C++:指针和数组

在C++语言中,指针和数组由非常紧密的联系,就如即将介绍的,使用数组的时候,编译器一般会将其转换成指针。

通常情况下,使用取地址符来获取指向某个对象的指针,取地址符可以用于任何对象。数组的元素也是对象,对数组使用下标运算符得到该数组指定位置的元素。因此像其他对象一样,对数组的元素使用取地址符就能得到指向该元素的指针:

string nums[]={"one","two","three"};        //数组的元素是string对象
string *p=&nums[0];                         //p指向nums的第一个元素

然而,数组还有一个特性:在很多使用到数组名字的地方,编译器都会自动地将其替换为一个指向数组首元素的指针:
 

string *p2=nums;    //等价于p2=&nums[0]

由上可知,在某些情况下,数组的操作实际上是指针的操作,这一结论有很多隐藏的意思,其中一层意思是当使用数组作为一个auto型变量的初始值时,推断得到的类型是指针而非数组
 

int ia[]={0,1,2,3,4,5,6,7,8,9};    //ia是一个含有10个元素的数组
auto ia2(ia);                      //ia2是一个整型指针,指向ia的第一个元素
ia2=ia;                            //错误:ia2是一个指针,不能用int型变量赋给指针

   指针也是迭代器             

vector和string迭代器支持的运算,数组的指针全部支持。例如:允许使用递增运算符将指向数组元素的指针向前移动到下一个位置上:

int arr[]={0,1,2,3,4,5,6,7,8,9};
int *p=arr;        //p指向arr的第一个元素
++p;               //p指向arr[1]

也可以实现输出arr的全部元素:

int *e=&arr[10];        //指向arr尾的下一个位置的指针
for(int *b=arr;b!=e;++b)
    cout<<*b<<endl;     //输出arr的元素
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值