C++指针篇

1、多级指针

char *string[10];

在C++中,一维数组的名字string指向存储数据元素的空间的起始地址,也就是指向数组的第一个元素的指针,而在此数组中的每个元素又是一个指针,因此string本身指向了一个存储指针的单元,他被称为指向指针的指针。

普通的数组可以通过指向同类型的指针来访问,同来,指针数组也可以通过指向指针的指针来访问,如下代码:

#include<iostream>

using namespace std;

int main()

{

char **p,*city[]={"aaa","bbb","ccc","ddd","eee"};

for(p=city;p<city+5;p++)

cout<<*p<<endl;

return 0;

}

输出的结果:“aaa”  "bbb" .... "eee"


2、多维数组和指向数组的指针

 int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};


#include<iostream>
using namespace std;
int main(void)
{
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
cout<<a<<a+1<<a+2<<endl;
cout<<*a<<a[0]<<endl;
cout<<*(a+1)<<a[1]<<endl;
cout<<*(*(a+1)+1)<<endl;

return 0;
}

每个a[i]是一个由4个元素组成的一维数组。a[i]可以看成一维数组的数组名,因此a[i]可以看成指向第i行第0个元素的指针,是一个指向整形元素的指针,a[i]+1指向第i行的第1个元素,。。。。数组名a指向由3行组成的一维数组的第0个元素,即a[0]

从一维数组的角度来看,a是a[0]的地址,也就是第0行的首地址,a+1是a[1]的地址,也就是第一行的首地址,依次类推,由此可见,对指针a加1,事实上是调到下一行,在本例中跳过了4个元素,这样的指针称为指向一维数组的指针

指向一维数组的指针可以这样定义:

类型 (*指针变量名) [元素个数];

二维数组的访问也可以通过指针实现,例如,如果定义

int (*p)[4],*q;

那么,可以通过以下方法输出数组a的所有元素:

for(p=a;p<a+3;p++)

{

for(q=*p;q<p+4;q++)

{

cout<<*q<<'\t';

}

cout<<endl;

}

注意点:

在使用指针访问二维数组时,细心的人会发现,如果输出a和a[0],这两个值是相同的,但是,这两个值的含义是不同的,前者是第0行的首地址,它的类型指向由4个元素组成的一维数组的首地址,后者是第0行第0个元素的地址它的类型是整形指针

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值