二维数组相关,指针,地址

先从用指向行的指针操作二维数组说起:
inta[][2]={1,2};
int(*p)[2]=NULL;
p=a;
接下来可以用p来代替a访问二维数组,如p[0][0];

为什么不能用 int *p[2];呢?首先,比如int b[2],此时b是一个数组,且是个指针常量,是不能赋值的,同样p也是个指针常量,不能用p=a来赋值。
但我们可以这样:
int a[][2]={1,2,3,4};
int *p[2];
for(int i=0;i<2;i++){
p[i]=a[i];
}

此时就可以用p代替a来访问了,如p[0][0]; 要说明的是p是个指针常量,指向&p[0],但要注意此时p和a是不一样的,所指向的地址不一样,p指向&p[0],而a指向a[0]。已经验证过

另外很重要的一个说明:定义了变量,那么编译器里就会存在该变量的地址,比如:我们定义了int t=10;那么编译器里就存在t的一个地址,且可用&t获得,但是&&t是非法的不存在。。。编译器里只存了我们所定义的变量的地址,比如:int a=10;int *b=&a;那么&b又是合法的了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

zlingh

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值