📜  const int *,const int * const和int const *之间的区别(1)

📅  最后修改于: 2023-12-03 15:14:14.781000             🧑  作者: Mango

区别介绍

在介绍三者之间的区别之前,首先需要理解C语言中的指针类型。指针是一个变量,它存储另一个变量的内存地址。在C语言中,指针类型用于存储指向某个数据类型的指针。

指针类型有两个部分:基类型和修饰符。基类型指向的是指针所指向的变量的数据类型,而修饰符用于描述指针的指向关系。

在C语言中,有三个修饰符用于描述指针的指向关系:const、volatile和restrict。其中,本文主要介绍const修饰符对指针类型的影响。

const int *

const int *表示指向int类型的const指针。这意味着该指针指向的数据是只读的,不能被修改。

const int a = 10;
const int* p = &a;

*p = 20; // 错误,不能修改*p所指向的数据

注意,const修饰的是指针所指向的变量,而不是指针本身。因此,我们仍然可以修改指针指向的位置。

int b = 10;
const int* p = &b;
int c = 20;

p = &c; // 正确,可以修改p的指向位置
const int * const

const int * const表示指向int类型的const的const指针。这意味着该指针指向的数据和指针本身都是只读的,不能被修改。

const int a = 10;
const int* const p = &a;

p = NULL; // 错误,不能修改p的值
*p = 20; // 错误,不能修改*p所指向的数据
int const *

int const *表示指向const int类型的指针。这意味着该指针指向的数据是只读的,不能被修改。

int const a = 10;
int const* p = &a;

*p = 20; // 错误,不能修改*p所指向的数据

const int *类似,const修饰的是指针所指向的变量,而不是指针本身。

int b = 10;
int const* p = &b;
int c = 20;

p = &c; // 正确,可以修改p的指向位置

总结

  • const int *表示指向int类型的const指针,该指针指向的数据是只读的,不能被修改,但指针本身是可修改的。
  • const int * const表示指向int类型的const的const指针,该指针指向的数据和指针本身都是只读的,不能被修改。
  • int const *表示指向const int类型的指针,该指针指向的数据是只读的,不能被修改,但指针本身是可修改的。

在实际开发中,对指针类型的理解和正确使用是非常重要的。希望通过本文的介绍,可以帮助大家更好地使用指针类型。