7、数组1---(定义、a,&a,&a[0]区别、以指针形式访问和以下标形式访问)(

 

1.数组定义

 当定义一个数组a时,编译器根据指定的元素个数和元素类型分配确定大小(元素个数*sizeof(元素类型))的一块内存,并把这块内存的名字命名为a

           eg: int a[5]

           sizeof(a)=20

           sizeof(a[0])=4

           sizeof(a[5])=4   这里sizeof(a[5]) ? = 4呢

    首先,sizeof是个关键字,不是函数;函数求值是在运行的时候,而关键字sizeof求值是在编译的时候。虽然a[5]这个元素并不存在,但是这里编译器并没有真正的去访问它,而是仅仅根据数组元素的类型来确定其值,即sizeof(a[5]) = sizeof(int) = 4

 

2.数组中a,&a,&a[0]区别

          eg: int a[5]

          a:表示数组首元素的地址,与&a[0]相同

          &a:表示数组的首地址

          &a[0]:与a相同

          但是这三个的值大小是相等

          PS:数组名不能作为左值

 

3.以指针形式访问和以下标形式访问

            char *p = "654321";    

 指针形式访问指针(读取2):*(p + 4)    //先取出p里面存储的地址值,再加4个char型偏移

 下标形式访问指针(读取2):p[4]        //编译器总是把以下标形式的操作解析为以指针的形式操作

 

            char a[] = "fedcba";

 指针形式访问数组(读取d):*(a+4)      //这里的a = &a[0]

 下标形式访问数组(读取d):a[4]

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值