C语言中的常量和变量

一.常量和变量的介绍

首先,常量和变量均是用来存储数据的。
1.常量:在程序执行的过程中它的值是不可以改变的
如:圆周率 性别 血型等。
常量分为**(1)字面常量****(2)const修饰的常变量**(3)#define定义的标识符常量 (4)枚举常量**
补充:对于#define定义的标识符常量,没有分号结束标记

字面常量:

如20 3.14

const修饰的常变量:(本质上还是一个变量,而不是常量)

当n没有被const修饰
例:

int num=10;
printf("%d\n",num);
num=20;//修改
printf("%d\n",num);
return 0;

结果是

10
20

但是,当const修饰num后

这里要注意,用const修饰变量的时候,一定要给变量初始化,否则之后就不能再进行赋值了

const int num=10;//也可以写成  int const num=10;
printf("%d\n",num);
num=20;//修改
printf("%d\n",num);
return 0;

结果会报错
因为const修饰后,不可以再更改数值

那么,const修饰的变量最终变为了常量,还是任然是变量呢?
如下的一个例子:证明它还是一个变量

例:

int n=10;
int arr[n]={
   0};
return 0;

结果会报错“应输入常量表达式”
[]中需要的是一个常量,而n是一个变量

const int n=10;
int arr[n]={
   0};
return 0;

结果会报错
说明const修饰后的n本质上仍然是变量

补充一个用const修饰常量静态字符串

const char* str="abcdef";

如果没有const修饰,当我们在之后的代码不小心写出str[2]='g';这样的语句时,这个语句会导致对只读内存区域的赋值,然后程序会立刻异常终止。当加了const之后,这个错误在程序编译的时候就被检查出来,这就是const的好处,让逻辑错误在程序编译期就被发现

const修饰全局变量

全局变量的作用域是整个文件,应该尽量避免使用全局变量,因为一旦有一个函数改变了全局变量的值,会影响到其他引用这个全局变量的函数,导致bug很难发现。如果一定要使用全局变量,应尽量使用const修饰全局变量,防止不必要的人为修改

常量指针和指针常量

常量指针:是指针指向的内容是常量
注意:
(1)常量指针指的是不能通过这个指针改变变量的值,但是可以通过其他的引用来改变变量的值
例:

int a=5;
const int * n=&a;
a=6;
//结果是6

(2)常量指针指向的值不能改变,并不意味着指针本身不能改变,这个常量指针仍可以指向其他地址

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值