欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

C语言.const修饰的作用

程序员文章站 2022-07-09 21:47:13
...
  1. 概念:
    const修饰了某一个变量之后,就不能通过该变量修改里面。

  2. 使用场景:
    在形式参数中遇到const修饰某些变量

int fun(const int a) // 一旦a被实参初始化了之后,就不能通过a修改a的值
int fun()
{

}

  1. 例子:
    #include <stdio.h>

int main()
{
/* 当const关键词修饰普通变量
const int a;a = 100; //用const指针修饰a,a是可以赋一个初值,但是之后就不能是用a修改a的值
printf(“a = %d\n”,a);
a = 200;//编译出错 error: assignment of read-only variable ‘a’
printf(“a = %d\n”,a);
*/

/*当const关键词修饰指针变量
int a = 100;
int b = 50;
int * const p = &a;// const修饰p的本身,所以p一旦赋值了初值之后,就不能再通过p来修改p的自身。
//p = &b;//编译出错 error: assignment of read-only variable ‘a’
*p = 200;//是正确,因为const修饰p,但是没有修饰p指向的内容,所以可以通过p修改p指向的内容
printf("*p = %d\n",*p);
*/
 
/* 当const关键词修饰指针变量指向的内容时 */
/*
int a = 100;
int b = 200;
const int *p = &a; //const关键词修饰p指向的内容,而不是修饰p,所以p可以通过p修改p的值
p = &b;
b = 50;//没问题
*p = 50;//编译出错 error: assignment of read-only variable ‘a’
		//原因: const修饰的是p指向的内容,所以我们不能通过p修改p指向的内容
printf("*p = %d\n",*p);
*/
  1. 结论:
    // const int *p 等价于 int const *p 修饰的是p指向的内容 p = xxx地址(正确) *p = xxx值(错误)
    // int * const p 修饰的是p的本身 p = xxx地址(都是错误的) *p = xxx值(都是正确)

    return 0;
    }

相关标签: const