C语言变量和常量

本文讨论了C语言中变量和常量的初始化、定义方式,特别是const关键字的使用。指出了不同编译器对常量处理的差异,并介绍了常量指针与指针常量的概念。此外,还详细列举了limits.h和float.h头文件中提供的基本类型边界和浮点精度的明示常量。
摘要由CSDN通过智能技术生成

基本数据类型的初始值跟编译器有很大关系,不是所有编译器int初始值都为0,因此除非你的代码不需要移植,并且对编译器非常了解,否则就应该手动进行初始化。下面再来看看常量,通过#define PI=3.14 定义别名和const int PI=3.14都可以定义常量,区别是#define是预编译替换指令,不在系统中创建变量名。用const定义的是一个不允许改变值的变量,显然使用const更加标准,而且含义更加清楚。

如果定义基本数据类型的常量,则常量的值不允许修改,如果将struct定义为常量则既不能对结构体常量进行赋值也不能修改结构体成员的值。对于全局变量和常量,初始化时必须使用常量,某些编译器更加严格,甚至不允许用一个常量初始化另一个常量,例如下面代码在VS中不允许但在gcc中可以通过编译:
const int MM = 0;
int XX = 2+MM;//在VS中不允许,但在gcc中允许

指针常量有三种定义方式:
const int *p const int是一个整体,表示p指向的内容不可修改,但p可以指向其它地址,我们将这种指针称为常量指针
int *const p const p是一个整体,表示指针p不可修改,但p指向的内容可以发生变化,将这种指针称为指针常量
const int *const p 表示p和它指向的内容都不能修改
记住const和接在它后面的部分是一个整体,拥有最高结合度。当将一个常量指针赋值给一个变量指针时,我们仍然可以通过变量指针修改指向的内容,但这种操作被视为不安全的,编译器会给出警告,有的编译器直接报错。但是将一个变量指针赋值给常量指针是安全的,很多标准库函数都采用此方法来保

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值