C语言笔记(7)常量以及相关知识

1.常量定义:

常量是固定值,在程序执行期间不会改变。这些固定的值,又叫做字面量

2.常量分类:

常量可以是任何的基本数据类型,比如整数常量、浮点常量、字符常量,或字符串字面值,也有枚举常量。

3.常量特点

常量就像是常规的变量,只不过常量的值在定义后不能进行修改。

常量可以直接在代码中使用,也可以通过定义常量来使用。

4.const修饰的常变量

5.枚举常量:一一列举,用到关键词enum

6.define定义的标识符变量

4.const修饰的常变量在C语言中只是在语法层面限制了变量不能直接被改变,但本质上还是一个变量。

const修饰后变量值不可修改,否则运行不起来。

#include <stdio.h>
int main()
{
	const int a = 10;
	a = 8;
	printf("%d", a);
	return 0;
}

当变量被const修饰时,不能再修改变量的值,否则会发生报错。

const修饰变量有两种写法:

(1)const int a = 10;

  (2)   int const b = 10;

这两个句子是一样的,const位置前后无影响.

使用const修饰变量不初始化

如果定义时未初始化,对于未初始化的局部变量,程序在执行时会自动把一个很小的负数存放进去。这样后来再给它“赋值”就“改变它的值”了,发生语法错误。

5.枚举常量是C语言中的一个基本数据类型,用于定义一组具有离散值的变量,是数据更简洁,易读。

定义一个枚举类型,需要用enum关键词,后面跟着枚举类型的名称,以及用{ }括起来一组枚举常量。每个枚举常量用一个标识符表示,也可以为它们指定一个整数值,如果没有指定,那么默认从0开始递增。

比如:

#include <stdio.h>
enum DAY
{
	MON = 1, TUE, WED, THU, FRT, SAT, SUN
};

int main()
{
	enum DAY day;
	day = WED;
	printf("%d", day );
	return 0;
}

运行结果:3.

注意:如果不赋值,第一个枚举成员默认为整数0,后续枚举成员在前一个成员上加1.

枚举常量定义:

(1)先定义枚举类型,在定义枚举变量

enum DAY

{MON = 1, TUE, WED};

enum DAY day;

(2)定义枚举类型同时定义枚举变量

enum DAY

{MON = 1, TUE, WED} day;

(3)省略美剧名称,直接定义变量enum

enum

{MON = 1; TUE, WED}day;

6.define定义常量也叫做宏定义

C语言程序从编写到运行要经过预处理、编译、汇编和链接这四个阶段。

C语言中,可以用#define定义一个标识符来表示一个常量。其特点是:定义的标识符不占内存,只是一个临时的符号,预编译后这个符号就不存在了。

定义形式:#define 标识符 常量

宏定义好处:方便程序修改

#include <stdio.h>
#define NUM 5
int main()
{
	int i = NUM;
	int arr[NUM] = { 0 };
	int j = 0;
	for (j = 0; j < i; j++)
	{
		printf("%d ", arr[j]);
	}
	return 0;
}

运行结果:0 0 0 0 0

可以看到i和arr【】在函数体中也可以使用宏定义的NUM

#define ADD(x,y)((x)+(y)) <==>int ADD(int x, int y)

(x,y)叫宏的参数,无类型。((x)+(y))叫宏体

#define 与 const区别:

(1)#define仅进行简单的文本替换,而const是声明一个具有类型的变量。#define定义的常量在编译时会被直接替换成其对应值,而const定义的常量在程序运行时会分配内存,并且具有类型信息。

(2)#define定义的常量没有作用域限制,它在定义之后的整个代码中都有效。而const定义的常量具有块级作用域,只在其所定义所在的作用域内有效。

(3)#define宏仅仅是展开,有多少地方使用,就展开多少次,不会分配内存。

const常量会在内存中分配(可以是堆也可以是栈中)。 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

千度vea

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值