变量与常量详解

变量与常量详解

  • 前言
  • 一、变量是什么?
    • 1、定义变量的方法
    • 2、变量的命名
    • 3、变量的分类
      • (1)局部变量
      • (2)全局变量
      • (3)两者重点
    • 4、变量的作用域和生命周期
      • (1)作用域
      • (2)生命周期
  • 二、常量是什么?
    • 1、字面常量
    • 2、const修饰的常变量
      • (1)const修饰的常变量重点
    • 3、#define 定义的标识符常量
    • 4、枚举常量
  • 总结


前言

我们生活的世界变化万千,但有些东西是不变的(比如:圆周率、身份证号、性别等),而有些东西是随着时间或者某种外因而变化的(比如:身高、体重、年龄等)。


一、变量是什么?

C语言中把变化的值,用变量概念来表示

1、定义变量的方法

#include<stdio.h>
int main()
{
    int age=18;
    float height=184.5f;
    char ch='H';
    return 0;
}

2、变量的命名

1).只能由字母(包括大写和小写)、数字和下划线( _ )组成。
2).不能以数字开头。
3).长度不能超过63个字符。
4).变量名中区分大小写的。
5).变量名不能使用关键字。

3、变量的分类

变量分为局部变量全局变量

(1)局部变量

局部变量,也称内部变量,是指在一个函数内部或复合语句内部定义的变量。
也可以浅显的理解为{ }内定义的变量只能在{ }内的范围使用。

代码如下(示例):

#include<stdio.h>
int mian()
{
	int a = 1;
	if (a = 1)
	{
		int j = 1;
	}
	printf("%d", j);
	return 0;
}

此时就会报错如下:
变量与常量详解_第1张图片
如果将printf函数放入if语句{ }中就可以打印
代码如下(示例):

#include<stdio.h>
int mian()
{
	int a = 1;
	if (a = 1)
	{
		int j = 1;
		printf("%d", j);
	}
	return 0;
}

此时就会打印成功:
变量与常量详解_第2张图片

(2)全局变量

全局变量也称为外部变量,它是在函数外部定义的变量。 
它不属于哪一个函数,它属于一个源程序文件。

代码如下(示例):

#include<stdio.h>
int j = 1;//全局变量
int main()
{
	int a = 1;
	if (a = 1)
	{
		printf("%d\n", j);
	}
	printf("%d\n", j);
	return 0;
}

编译结果如下:
变量与常量详解_第3张图片
我们可以发现不论是哪里的printf函数都将j的值打印出来了,这就是全局变量作用

(3)两者重点

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

代码如下(示例):

#include<stdio.h>
int j = 10;//全局变量
int main()
{
	int j = 20;//局部变量
	printf("%d\n", j);
	return 0;
}

编译结果如下:
变量与常量详解_第4张图片

4、变量的作用域和生命周期

(1)作用域

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

(2)生命周期

1.变量的生命周期指的是变量的创建到变量的销毁之间的一个时间段
2.局部变量的生命周期是:进入作用域生命周期开始,出作用域生命周期结束。
3. 全局变量的生命周期是:整个程序的生命周期。

二、常量是什么?

C语言中把不变的值,用常量概念来表示

C语言中的常量分为四种:字面常量、const 修饰的常变量、#define 定义的标识符常量、枚举常量。

1、字面常量

代码如下(示例):

#include<stdio.h>
int main()
{
    18;
    184.5;
    80;
    returm 0;
}

2、const修饰的常变量

代码如下(示例):

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

编译结果如下:
变量与常量详解_第5张图片
就会出现a重定义,无法修改

(1)const修饰的常变量重点

虽然被const修饰后为常变量,但本质上是变量

代码如下(示例):

#include<stdio.h>
int main()
{
    const int a = 10;
    int arr[a] = { 0 };
    return 0;
}

编译结果如下:
变量与常量详解_第6张图片
就会出现报错表达式中必须含有常量值,因为在静态内存分配中要先分配内存,此时就要求表达式必须是一个常量,也间接证明了,const修饰后的常变量,本质上是一个变量。

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

代码如下(示例):

#include<stdio.h>
#define MAX 1000;
int main()
{
	int a = MAX;
	printf("MAX = %d\n",a);
	return 0;
}

编译结果如下:
变量与常量详解_第7张图片
为了将标识符与变量名区别开来,习惯上标识符全部用大写字母表示。程序中用双引号括起来的宏在预处理的时候是不会被宏替换的。因为在 C 语言中,用双引号括起来表示的是字符串,从上图编译结果就可以看出来。#define 的作用域为自 #define 那一行起到源程序结束,如果要终止其作用域可以使用 #undef 命令。

4、枚举常量

代码如下(示例):

#include <stdio.h>
enum Sex
{
     MALE,
     FEMALE,
     SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
     printf("%d\n", MALE);
     printf("%d\n", FEMALE);
     printf("%d\n", SECRET);
     //注:枚举常量的默认是从0开始,依次向下递增1的
     return 0}    

编译结果如下:
变量与常量详解_第8张图片
当然你也可以直接在定义的时候直接定义初始大小,也是可以的

#include <stdio.h>
enum Sex
{
     MALE=2,
     FEMALE,
     SECRET
};
//括号中的MALE,FEMALE,SECRET是枚举常量
int main()
{
     printf("%d\n", MALE);
     printf("%d\n", FEMALE);
     printf("%d\n", SECRET);
     //注:枚举常量的默认是从0开始,依次向下递增1的
     return 0;
}    

编译结果如下:
变量与常量详解_第9张图片

总结

以上就是今天我给大家所介绍的内容,大家一定要多记住两者区别和重点,希望能够对初学者学习变量和常量时有所帮助。

你可能感兴趣的:(初学C语言,c++,c语言)