指向数组的指针

#include<stdio.h>//程序1,c语言程序.c
int main(){
    int a[3][3]={1,2,3,4,5,6,7,8,9};
    int *pa[3]={a[0],a[1],a[2]};
    int *p=a[0];
    int i;
    for(i=0;i<3;i++)
        printf("%d,%d,%d\n",a[i][2-i],*a[i],*(*(a+i)+i));
	printf("\n");
    for(i=0;i<3;i++)
        printf("%d,%d,%d\n",*pa[i],p[i],*(p+i));
}

结果为:


二级指针:a,pa

一级指针:a[i],pa[i],p

我们说说*(*(a+i)+i), a为二级指针,(a+i)指向一级指针a[i]的地址,*(a+i)取a[i]地址,(*(a+i)+i)则表示指向a[i][i]的值,*(*(a+i)+i)为取值。

因此,可以得到:

a[i] = *(a+i)

*(*(a+i)+i) = a[i][i]

*a = a[0]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值