C-数组地址移动

#include<stdio.h>

int main()
{ 
    int a[6]={1,2,3,4,5,6};
    printf("a的地址%p\n",a);//a代表a[0]的地址也是a的首地址
    printf("a[0]的地址%p\n",&a[0]);//a[0]的地址

    return 0;
}

在一维数组中a和a[0]的地址相同,a和&a[0]的都代表a[0]的地址,&a代表整个数组a的地址

#include<stdio.h>

int main()
{  
    int b[3][3]={{1,2,3},{10,20,30},{11,22,33}};
    //b,&b[0],&b[0][0]三者地址相同,代表含意不同
    printf("b的地址%p,&b的地址%p,b[0]的地址%p,b[0][0]的地址%p\n",b,&b,&b[0],&b[0][0]);
    
    //b代表b[0]的地址,b+1向前移动整个b[0]的范围到b[1]
    printf("b的地址%p,b+1的地址%p\n",b,b+1);//移动了12bit

    //&b代表b数组整体,&b+1将整个向前移动一个数组b的范围
    printf("&b的地址%p,b+1的地址%p\n",&b,&b+1);//&b+1移动了36bit
    
    //&b[0]代表b[0]整体,&b[0]+1将向前移动b[0]所占字节的位置
    printf("&b[0]的地址%p,&b[0]+1的地址%p\n",&b[0],&b[0]+1);//&b[0]移动了12bit
    
    //&b[0][0]代表b[0][0]的整体,&b[0][0]将向前移动b[0][0]所占字节的位置
    printf("&b[0][0]的地址%p,b[0][0]+1的地址%p\n",&b[0][0],&b[0][0]+1);//移动了4bit
    
    return 0
}

二维数组中:b,&b,&b[0],&b[0][0]四者地址相同,代表含意不同

b代表b[0]的地址

&b代表存放整个b数组地址的地址

&b[0]代表b[0]的地址

&b[0][0]代表b[0][0]的地址

所以四者+1移动的字符位数不同

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值