C语言学习:const关键字

const 关键字 ——用于定义常变量的关键字(其通常在全局处定义作为全局常量)

//一般用法有2种
const int a = 10;
int const a = 10;
//这两种定义方式是等价的
特殊用法
const int *a; 
//定义一个指向常整型数的指针(const主要是修饰int,代表指向的整型数是不可改的,但是指针a指向的区域可以变)
int *const a;
//定义一个指向整型数的常指针(const主要修饰指针,代表指针指向的区域的数是可以修改的,但是指针所指的区域不可更改)
 const int *const a ;
//定义一个指向常整型数的常指针(即指针不可更改,所指数据也不可更改)

用const定义的是常量,但是其又具有变量的属性。

//定义的常量,但是常量具有数据类型
const int num = 1;//定义一个整型常量并赋值为1
const char num = '1';//定义一个字符类型的常量并赋值为'1',
					//这里的1是一个字符类型而不是整型

通常,用const进行定义时需要初始化,若未主动初始化则默认为0。
(建议必须初始化,未初始化的话常量在之后的程序中也不允许更改,此常量也失去了意义)
例子:

若用const修饰局部变量的话,则该局部变量便拥有了静态特性(静态特性指该局部变量虽然仍存储于栈中,且其生命周期为整个程序。)。

#include <stdio.h>
int main{
   
	const int a = 1;//const 修饰局部变量 赋予静态特性
	return 0;
}

const修饰函数的参数时,可以防止意外的改动。(一般只用来修饰指针)

void fun(int num,cosnt int *p)
//在此函数中,有2个参数,一个是整型num,一个是指向整型的指针类型,
//由于存在const关键字的修饰,该指针所指向的内存区域不可改变

总结:const关键字的好处,可在编译期就可发现意外的错误,频繁的使用const关键字可以减少意外的错误,防止改变不该改变的值。