C/C++基本数据类型---数组

      在各种有关C/C++的书籍和网页都对这个话题进行了详细的讲解。这篇文章只是记录作者在编程中的经验和困惑。
      先看下面的语句
      int p[5] = {1,2,3,4,5};
      相信大家都很熟悉这行语句表达的含义:定义一个有5个元素的整型数组,并初始化。但是p的含义是什么呢?
      p是一个数组名,代表数组首元素的地址。p是一个变量吗?不是!(p++这条语句是错误的)
     p是一个符号地址,是一个符号常量,那么p占用内存空间吗?不占用。
    int pAddr = (int)p; // p[0]的地址
    int pAddr = (int)&p;//p[0]的地址
    int pAddr = (int)&p[0];//p[0]的地址
    上面3行语句表达同一个意思。即:
     lea eax, [ebp-14h];                   // [ebp-14h]存储p[0]
     mov dword ptr [ebp-30h],eax;  //[ebp-30h]存储pAddr
     看下面的汇编代码:
     __asm mov eax,p;//p表示p[0],eax存储p[0]的值
     __asm lea eax,p;//p表示p[0],eax存储p[0]的地址
   经过以上分析,p可以看作是一个引用:即int& q = p[0],在这里p和q代表同一个意思。
   
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

vforkliu

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

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

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

打赏作者

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

抵扣说明:

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

余额充值