我尝试编译这段代码绝对确定它不会编译,因为我尝试将地址修改为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
答案 0 :(得分:0)
我尝试将地址修改为
const
指针(int p[100]
)
那不是const
指针。作为函数参数,它等同于int * p
。
const
指针看起来像int * const p
,如果你使用它,你的代码会给出预期的编译错误。