在函数中修改了常量指针

时间:2014-06-25 09:14:19

标签: c++ pointers const

我尝试编译这段代码绝对确定它不会编译,因为我尝试将地址修改为const指针(int p [100]),但代码编译并运行完美。任何人都可以向我解释为什么这有用吗?

#include <iostream>
using namespace std;

int bar1(int *p){ cout << p << " "; p++; cout << p << "\n"; return 0; }
int bar2(int p[100]){ cout << p << " "; p++; cout << p; return 0; }

int arr1[100];
int arr2[100];

int main(){
    bar1(arr1);
    bar2(arr2);
}

我在Visual Studio 2013中对此进行了编译,输出为:

3f320 3f324

3f4B0 3f4B4

1 个答案:

答案 0 :(得分:0)

  

我尝试将地址修改为const指针(int p[100]

那不是const指针。作为函数参数,它等同于int * p

const指针看起来像int * const p,如果你使用它,你的代码会给出预期的编译错误。