C语言中怎么定义常变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言中怎么定义常变量相关的知识,希望对你有一定的参考价值。

据我的经验,在C中有三种定义常量的方法:
第一种, 使用#define 宏定义,比如说你想定义一个值为10的常量,那么:
#define value 10
value就是一个值为10的宏,以后只要遇到value 系统就将value 替换为10,注意宏定义后面不能有分号。
第二种,采用const 关键字 把一个变量声明转换为常量声明。即:
const int value = 10;
value 是一个只读值,你不能再修改value的值。

第三种方法,采用枚举变量的功能,你声明一个枚举变量
enum name x =1,y=2,z=3;
其中的x,y,z就是个常量了,当然里面的值等于多少是你自己确定的,如果不显示声明,就是默认从0开始的。

希望对你有帮助!
参考技术A

常类型是指使用类型修饰符const说明的类型,常类型的变量或对象的值是不能被更新的。

定义const常量,具有不可变性比如:

int a=1;
const int b=2;
printf("%d\\n",a=34);//正确
printf("%d\\n",b=56);//错误

有问题请追问

参考技术B 定义常变量的关键字为const,格式如下:
const TYPE var_name=INIT_VALUE;
1、 var_name为变量名;
2、TYPE为变量类型;
3、INTI_VALUE为初始化值,非必须,但由于常变量值不可修改,所以一般都有初始化值,否则没意义;
4、const实际修饰为var_name,所以也可以写作:
TYPE const var_name=INIT_VALUE;
参考技术C 使用 const 。比如 const int a=0; 此时a 就是一个int型的常变量 参考技术D int const a=7追问

const是什么意思啊

在C语言中,为啥定义变量的时候总是初始化为0呢?该怎么理解。

请问为什么很多时候都是初始化为0,这个0是一个整数型的数值还是一个概念东西。
搞不懂为什么是0而不是其他的?希望能举例说明。

谢谢下面各位的回复。

因为变量是可以变动的,定义一个变量不初始化时,变量会是一个随机数,进行计算了的时候,就会引用那个随机数进行计算,会有误差。 参考技术A 初始化时,会为变量开辟存储空间,然后把字节变成0000 0000(就相当于复位)。

存在这种可能,该地址以前已使用过,但系统并没有回收,擦除。就存在脏数据。本回答被提问者采纳
参考技术B 如果你不想去研究汇编代码,那就记住:静态存储区的变量初始化为0,堆栈区(也就是局部)的变量初始化值看编译器,VC++6.0里的编译器初始化时把函数要用的堆栈区全初始化为0xcccccccc,而堆区(动态开辟)的值是不定的。
给你一个简单的测试
#include <stdio.h>
#include <malloc.h>
int a;
int main()

int b;
int *c = (int *)malloc(sizeof(int));
static int d;
printf("%x\n%x\n%x\n%x\n", a,b,*c,d);
free(c);
return 0;
参考技术C 如果全局变量在定义时不初始化则初始值是0,如果局部变量在定义时不初始化则初始值是不确定的。 参考技术D 谁说总是初始化0的,全局变量和静态变量会,局部变量不一定,可恨的不同的编译所采用的方式可能也不一样,所以建议在使用任何变量前自己要初始化

以上是关于C语言中怎么定义常变量的主要内容,如果未能解决你的问题,请参考以下文章

C语言中,该怎样区分指针常量和指针变量?

C语言里符号常量和常变量有啥区别?

C语言里符号常量和常变量有啥区别?

C语言 怎样区分指针常量和指针变量?

c语言中 int,char,real,bool,const有啥区别,怎么区分使用

c语言中num是啥意思