C中const int *,const int * const和int const *之间的差异

指针

在C语言中,* p表示存储在指针中的值,p表示该值的地址,称为指针。

const int *int const *表示指针可以指向常量int,并且该指针指向的int值不能更改。但是我们可以更改指针的值,因为它不是常量,并且可以指向另一个常量int。

const int * const表示指针可以指向一个常量int,并且该指针指向的int值不能更改。而且我们也不能更改指针的值,因为它现在是常量,并且不能指向另一个常量int。

Thumb规则是从右到左命名语法。

// constant指向常量int的指针
const int * const
//指向常量int的指针
const int *

范例(C)

取消注释注释的错误代码,然后查看错误。

#include <stdio.h>
int main() {
   //示例:int const *
   //注意:int const *与const int *
   const int p = 5;
   //q是指向const int的指针
   int const* q = &p;
   //分配无效
   //p的值不能更改
   //错误:分配了只读位置“ * q”
   //* q = 7; 
   const int r = 7;
   //q可以指向另一个const int-
   q = &r;
   printf("%d", *q);
   //示例:int const * const
   int const* const s = &p;
   // 分配无效
   //s的值不能更改
   //错误:分配了只读位置“ * s”
   //* s = 7; 
   // 分配无效
   //不能更改
   //错误:分配只读变量's'
   // s = &r;
   return 0;
}

输出结果

7