初识 4.变量、常量

4.变量、常量

生活中的有些值是不变的(比如:圆周率、身份证号码、性别、血型等)
有些值是可变的(比如:体重、年龄、薪资)
不变的值,C语言中用常量的概念来表示;变的值,C语言中用变量来表示

4.1定义变量的方法

char ch = "q";
int age = 18;
float weight = 55.5f

4.2变量的命名

只能由字母(包括大写和小写)、数字和下划线( _ )组成
不能以数字开头
有意义,如int age、float salary
变量名区分大小写
变量名不能使用关键字

4.3变量的分类

局部变量
全局变量

 #include <stdio.h>
 int main()
{
	int a = 10;
	int a = 100;
	printf("a=%d\n", a);//报错,因为a被重定义
	return 0;
}
#include <stdio.h>
int a = 100;//全局变量
int main()
{
	int a = 10;//局部变量
	printf("%d\n",a);//打印10
	return 0;
}

注:当局部变量和全局变量同名的时候,局部变量优先使用

4.4变量的使用

#include <stdio.h>
int main()
{
	int num1 = 0;
	int num2 = 0;//0-->初始化
	//输入2个整数
	scanf("%d %d", &num1, &num2);
	//求和
	int sum = num1 + num2;
	//输出
	printf("%d\n", sum);
	return 0;
}

注:在VS编译器中,scanf函数可能无法直接使用的原因主要是出于安全考虑。
解决办法1:在源文件顶部添加 #define_CRT_SECURE_NO_WARNINGS

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

作用域

作用域(scope)是程序设计概念,通常来说,一段程序代码中所用到的名字并不总是有效/可用的,而限定这个名字的可用性的代码范围就是这个名字的作用域

1.局部变量的作用域是变量所在的局部范围
2.全局变量的作用域是整个工程

生命周期

变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段

1.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束
2.全局变量的生命周期是:整个程序的生命周期

#include <stdio.h>
int main()
{
	{
		int a = 10;
		printf("a=%d\n", a);
	}
	printf("a=%d\n", a);//报错,a-->局部变量,超出生命周期
	return 0;
}
#include <stdio.h>
int main()
{
	int a = 10;
	{
		printf("a=%d\n", a);
	}
	printf("a=%d\n", a);//打印出来两个10
	return 0;
}
#include <stdio.h>
int a = 10;//全局变量
int main()
{
	{
		printf("a=%d\n", a);
	}
	printf("a=%d\n", a);//打印出来两个10
	return 0;
}
#include <stdio.h>
int a = 10;
void test()
{
	printf("test-->%d\n",a);
}
int main()
{
	test();
	{
		printf("a=%d\n",a);
	}
	printf("a=%d\n",a);
	return 0;
}
#include <stdio.h>
extern int a;//在另一源文件中创建int a = 10;
void test()
{
	printf("test-->%d\n", a);
}
int main()
{
	test();
	{
		printf("a=%d\n", a);
	}
	printf("a=%d\n", a);
	return 0;
}

extern是声明来自外部的符号

4.6常量

C语言中的常量分为以下以下几种:

字面常量
const 修饰的常变量
#define 定义的标识符常量
枚举常量

1.字面常量

#include <stdio.h>
int main()
{
	30;
	3.14;
	'w';
	"asdf";
	return 0;
}

2.const 修饰的常变量

#include <stdio.h>
int main()
{
	int a = 10;
	a = 20;
	printf("%d\n", a);//打印结果为20,说明a为变量
	return 0;
}

```c
#include <stdio.h>
int main()
{
	const int a = 10;//加上const会报错,不让改。在C语言中,const修饰的a,本质是变量,但是不能直接修改,有常量的属性
	a = 20;
	printf("%d\n", a);
	return 0;
}

注:
上面例子上的 a被称为 const 修饰的常变量, const 修饰的常变量在C语言中只是在语法层面限制了变量 a不能直接被改变,但是 a本质上还是一个变量的,所以叫常变量。

验证const修饰的a是变量/常变量

#include <stdio.h>
int main()
{
  int a = 10;
	int arr[10] = {0};//正常运行,10是常量
	return 0;
}
#include <stdio.h>
int main()
{
	int a = 10;
	int arr[a] = {0};//报错,a是变量。arr[]:括号内应输入常量表达式
	return 0;
}
#include <stdio.h>
int main()
{
	const int a = 10;
	int arr[a] = {0};//仍然报错,报错原因:arr[]:括号内应输入常量表达式。说明a仍然为变量
	return 0;
}

3.#define 定义的标识符常量

#include <stdio.h>
#define MAX 100
int main()
{
	printf("%d\n",MAX);
	return 0;
}
#include <stdio.h>
#define MAX 100
int main()
{
	MAX = 200;
	printf("%d\n",MAX);//会报错
	return 0;
}
#include <stdio.h>
#define STR "asdf"//asdf为字符串
int main()
{
	printf("%s\n", STR);//打印字符串用%s
	return 0;
}

4.枚举常量

enum Color
{
	RED,
	GREEN,
	BLUE
};//括号内的 RED,GREEN,BLUE 都是枚举常量
int main()
{
	printf("%d\n", RED);//0
	printf("%d\n", GREEN);//1
	printf("%d\n", BLUE);//2
	return 0;
}

注:枚举常量的默认是从0开始,依次向下递增1

enum Color
{
	RED,
	GREEN,
	BLUE
};
int main()
{
	int num = 10;
	enum Color c = RED;
	RED = 10//报错,不可改
	return 0;
}
  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值