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

来源:互联网 发布:妮维雅洗面奶 知乎 编辑:程序博客网 时间:2024/04/28 11:07
      在各种有关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代表同一个意思。