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