c++ - 数组作为 const 指针

标签 c++ arrays pointers

考虑以下代码:

void Increment(int *arr) {
    arr++;
}

int main() {
    int arr[] = {1,2,3,4,5};
    // arr++  // illegal because its a const pointer
    Increment(arr);   // legal
}

我的问题是,如果 arr 是一个 const 指针,我怎么能将它发送给一个不接收 const 指针的函数呢?

代码编译时没有丢弃 const 限定符的警告。

最佳答案

My question is if arr is a const pointer, how come i can send it to a function that doesn't receive a const pointer?

arr(在 main() 内)不是一个 const 指针,它是一个数组。当传递给函数时,数组类型会退化为指针类型。

Increment 中的

arr(参数)保存参数 arr 的地址拷贝(通过值从 main( )).

// arr++ // ileagal because its a const pointer

这是非法的,因为arr是一个不可修改的lvalue

关于c++ - 数组作为 const 指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3839553/

相关文章:

c++ - 使仿真具有确定性(基于 qemu 的仿真器)

c# - 保留录制视频的最后 X 分钟

java - android 中的数组越界异常

c - 函数 malloc 一个指针并将数据读入其中,但调用者无法访问它

c - 找到 的输出?

c++ - 有没有办法创建由 `std::function<>` 包装的函数的哈希值?

c++ - 数据结构......那么我如何理解它们?

iphone - 崩溃的原因..?

php - 将关联数组转换为表

c++ - 将结构指针传递给函数 C++