const和int* p有什么区别?
1、内容不同
constint* p; //p可变,p指向的内容不可变,int const* p; //p可变,p指向的内容不可变。 int* const p; //p不可变,p指向的内容可变 const int* const p; //p和p指向的内容都不可变。
2、取指针
const int类型一旦定义以后就不能修改,int类型是随时可以修改的。
3、返回值
const int是返回这个数值的一个常量的引用。
而int是返回这个数值的一个拷贝。
const作用:
1、可以定义const常量,具有不可变性。
例如:const int Max=100; Max++会产生错误。
2、便于进行类型检查,使编译器对处理内容有更多了解,消除了一些隐患。
例如: void f(const int i) { .........} 编译器就会知道i是一个常量,不允许修改。
3、可以保护被修饰的东西,防止意外的修改,增强程序的健壮性。
扩展资料:
const 和指针一起使用会有几种不同的顺序,如下所示:
1、const int *p1;
2、int const *p2;
3、int * const p3;
在最后一种情况下,指针是只读的,也就是 p3 本身的值不能被修改;在前面两种情况下,指针所指向的数据是只读的,也就是 p1、p2 本身的值可以修改(指向不同的数据),但它们指向的数据不能被修改。
当然,指针本身和它指向的数据都有可能是只读的,下面的两种写法能够做到这一点:
1、const int * const p4;
2、int const * const p5;
'const int* p' 表示指针 p 指向的内存是常量,不能通过指针修改其中的值。例如:
const int x = 5;
const int* p = &x;
*p = 6; // 非法,不能通过指针修改x的值
'int* const p' 表示指针本身是常量,不能把它指向其他内存。例如:
int x = 5;
int y = 6;
int* const p = &x;
p = &y; // 非法,不能把p重新指向y
所以说'const int* p' 指针所指向内存是不能改变的,而'int* const p' 指针本身是不能改变的。