我们经常可以在函数接口参数位置看到有const关键字,但是这个关键字到底有什么作用呢?其实const关键字的作用主要是看它在 * 号的左边还是右边。
如果 const 是在 * 号的左边,主要表示的是指向的内存空间内容不能够随意修改;如果 const 是在 * 号的右边,主要表示的是指向的,代表了常量指针,其内容可以修改,但是指针指向的目标内存是不能够修改的;如果*号左右都有指针的话,便说明,指针指向和内容都不能够修改。
举例说明:
int getStr(const char* p1){
//此处const的作用是p1所指向的内存空间不能够随意修改
//p1[0] = 'a';
p1 = 0x1;
p1 = 0x2;
return 0;
}
int getStr2( char* const p1){
//此处const的作用是指针p1是一个常量,指向的地址可以随意修改,但是指针不能改动
p1[0] = 'a';
// p1 = 0x1;
// p1 = 0x2;
//p1++;
return 0;
}
int getStr3(const char* const p1){
//指针和指针地址都不能够随意修改
// p1[0] = 'a';
// p1 = 0x1;
// p1 = 0x2;
//p1++;
return 0;
}
int main(int argc, const char * argv[]) {
system("pause");
return 0;
}
思考:为什么int a[10]是一个常量?
int a[10];
// a++; 报错
int *p = a;
p++;
system("pause");
return 0;
}
因为C++编译器要拿着a去析构内存,不能让你随意改变指针的指向。