C中const int *,const int * const和int const *之间的差异
指针
在C语言中,*p表示存储在指针中的值,p表示该值的地址,称为指针。
constint*和intconst*表示指针可以指向常量int,并且该指针指向的int值不能更改。但是我们可以更改指针的值,因为它不是常量,并且可以指向另一个常量int。
constint*const表示指针可以指向一个常量int,并且该指针指向的int值不能更改。而且我们也不能更改指针的值,因为它现在是常量,并且不能指向另一个常量int。
Thumb规则是从右到左命名语法。
// constant指向常量int的指针 const int * const //指向常量int的指针 const int *
范例(C)
取消注释注释的错误代码,然后查看错误。
#include <stdio.h>
int main() {
//示例:intconst*
//注意:intconst*与constint*
const int p = 5;
//q是指向constint的指针
int const* q = &p;
//分配无效
//p的值不能更改
//错误:分配了只读位置“*q”
//*q=7;
const int r = 7;
//q可以指向另一个constint-
q = &r;
printf("%d", *q);
//示例:intconst* const
int const* const s = &p;
// 分配无效
//s的值不能更改
//错误:分配了只读位置“*s”
//*s=7;
// 分配无效
//不能更改
//错误:分配只读变量's'
// s = &r;
return 0;
}输出结果
7