c++,操作指向数组第一个元素的指针

标签 c++ arrays pointers element

我写了一小段代码来快速解释我的问题:

    #include<iostream>
    using namespace std;

    int main()
    { int a [10] = { 200, 60, 100, 70, 0, 0, 105, 400, 450, 30};
      int *b = &a[0];
      int *c = &a[9];
      int *d = b+9;

      cout<<&b[9]<<endl
      <<c<<endl
      <<d<<endl;
    return 0;
    }

我不明白为什么我必须使用地址运算符来获得相同的结果。更具体地说,b[9](而不是&b[9])不应该等于&a[9] b+9?我很困惑,因为 b 已经被定义为一个指针,b[9] 也应该是一个,它指向与 b+9 相同的地址对我来说很有意义。

在我的示例中,b[9] 实际上代表什么?

最佳答案

b[9] 根据定义是 *(b+9)。也就是说,数组运算符 [] 对索引和指针求和,然后取消引用该指针

所以:

b[9] == a[9]
b+9 ==  &(a[9])

都是正确的陈述。

关于c++,操作指向数组第一个元素的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9282994/

相关文章:

arrays - 通过在值中分配一个数组在哈希中添加键值对=>不能将未定义的值用作ARRAY引用

c - 获取未知长度的字符串数组的长度

C 中用字符串初始化的 char 指针 - 谁能给我解释一下每一步

c - 如何修复访问冲突写入异常

c - 删除链表的唯一节点

c++ - 显示多态类

java - 从 j2me 读取图像到 c++

c++ - 如何在VS项目中静态链接没有dll文件的cpprest?

php - array_splice() 用于关联数组

c++ - 在 googletest 或 cppunit 下移动参数化测试