c语言-变量和常量

本文详细介绍了C语言中的变量概念、作用域和生命周期,区分了局部和全局变量,探讨了常量的分类,包括字面常量、const修饰的变量和指针,以及转义字符的用法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

本篇文章介绍C语言的变量和常量。


一、变量

1.1 变量的概念

局部变量:{}内部定义的变量
全局变量:{}外部定义的变量
注意:当全局变量和局部变量的命名相同时,局部变量使用优先。

1.2 变量的作用域和生命周期

1.2.1 变量的作用域

变量的作用域:变量的有效使用范围。
局部变量的作用域:变量的所在的局部范围(定义变量的{}内有效)。
全局变量的作用域:整个工程。

1.2.2 变量的生命周期

变量的生命周期:变量的创建-使用-销毁的整个过程。
局部变量的生命周期:进入作用域,生命周期开始;离开作用域,生命周期结束。
全局变量的生命周期:整个程序的生命周期。

二、常量

2.1 常量的分类

  1. 字面常量
    字符常量,例如: ‘a’
    字符串常量,例如, “abc”
    数字值:例如,3.14 和5
  2. const修饰的常变量
    const修饰的变常量本质是变量,不能直接被修改,有常量的属性。

关于const关键字的说明如下:
2.1 const修饰普通变量时,不能直接通过变量名修改变量的值;但可以通过间接修改,比如通过指针修改。

int main()
{
	const int a = 10;
	//a = 20; 这种方式不允许,直接报错 
	int* pa = &a;
	*pa = 20;  //通过指针间接修改a的值
	printf("%d", a);
	return 0;
}

2.2 const修饰指针变量时,分两种情况:

  • 当const位于*的左边时,指针变量pa指向的对象不能直接通过pa来改变,但指针变量pa本身的值可以改变
int main()
{
	int a = 10;
	int b = 20;
	const int* pa = &a;
	printf("*pa = %d",*pa);
	//*pa = 20;  //不允许修改,直接报错
	pa = &b;  //可以修改指针变量pa的指向
	printf("*pa = %d", *pa);
	return 0;
}

当然,如果实在是想要修改被const修饰的指针pa指向的对象的值,需要利用二级指针间接修改。

//二级指针修改被const修饰的一级指针
int main()
{
	int a = 10;
	const int* pa = &a;
	printf("未修改前 a = %d\n", a);
	int** ppa = &pa;
	**ppa = 20;  // *ppa == &a, **ppa = 20 
	printf("通过二级指针修改后 a = %d\n", a);
	return 0;
}
  • 当const位于*的右边时,指针变量p指向的对象可以通过p改变,但指针变量p本身的值不可以直接改变。
int main()
{
	int a = 10;
	int b = 20;
	int* const pa = &a;
   //	pa = &b;   //不可以修改pa本身的值
	*pa = 20;  //可以修改pa指向的对象的值
	printf("%d", a);
	return 0;
}

如果想要修改pa的指向,可以通过二级指针间接修改

int main()
{
	int a = 10;
	int b = 20;
	int* const pa = &a;
	printf("*pa = %d\n", *pa);
	int** ppa = &pa;
	*ppa = &b;  //相当于 pa = &b
	printf("*pa = %d\n", *pa);
	return 0;
}
  1. define定义的标识符常量
  2. 枚举常量

三、转义字符

转义字符是指使用\与其他字符组成一个字符,表示另一种意思。

转义字符释义
\n换行
\t水平制表符
\v垂直制表符
\b退格符
\a蜂鸣
\r回车
\f进纸符
\’单引号
\"双引号
\ \字符’\’
\0字符串结束符
\ddd八进制形式
\xddd十六进制形式,例如,‘a’的十六进制ASCII码是61,于是’a’也可表示为’‘\x61’

总结

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值