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

C语言关键字之const

程序员文章站 2022-07-09 21:46:55
...

 

目录

前言

1.const功能

2.const实例

2.1 const修饰一个变量

2.2 const修饰指针变量

2.3 函数形参被const修饰


前言

初学C语言时,对于const关键字的理解仅仅停留在“不可改变”这一层意思上。本文总结一下const关键字在各种情况下的使用方法,及其功能。后续如果遇到新的使用情况会随时更新。

1.const功能

const修饰的变量,该变量没有写权限,只有读权限。所以也可称被const修饰的变量为常量。后续各种用法本质都遵循这句话。

2.const实例

2.1 const修饰一个变量

①变量被const修饰时,必须在定义时进行赋值,因为被const修饰的变量没有写权限,如果不在定义时赋值,编译会报警告。如果试图对该变量赋值,编译会报错。

②const在修饰变量变量时,位置不做要求。

void function(void)
{
    int a;
    const int test_1;          //没有赋值,编译会报警告!
    const int test_2 = 10;     //正确赋值
    int const test_3 = 11;     //const位置变化无影响

    test_1 = 9;                //试图赋值,编译报错!
    a = test_2;                //可以读,合法
}

2.2 const修饰指针变量

const在修饰指针变量时,容易混淆。

int a = 100;
int b = 200;

/*1.const修饰*test_1,将test_1作为左值合法,将*test_1作为左值非法*/
const int *test_1=&a;        
test_1 = &b;                //使用test_1做左值,合法
printf("%d",*test_1);       //输出结果为:200

*test_1 = 200;             //使用*test_1做左值,非法

/*2.const修饰test_2,将test_2作为左值非法,将*test_2作为左值合法*/
int * const p2=&a; 
*test_2=300;                //使用*test_2做左值,合法
printf("%d",*test_2);       //输出结果为:300

test_2=&b;                  //使用test_2做左值,非法

/*3.const分别修饰*test_3,test_3,将*test_3,test_3作为左值都非法*/
const int * const test_3=&a;
test_3 = &b;               //使用test_3做左值,非法
*test_3 = 100;             //使用*test_3做左值,非法

只要记住const只锁定跟他相邻的变量即可。即:

当const放在 * 之前,修饰的是*test,此时如果对*test赋值就不合法,但是对test赋值合法。

当const放在*之后,修饰的就是test,此时如果对test赋值就不合法,但是对*test赋值合法。

当const放在*之前和之后,那么对*test和test赋值都不合法。

2.3 函数形参被const修饰

函数形参被const修饰,则在函数中,不能对此形参进行写操作,只能读。

 

相关标签: const