变量与常量详解

变量与常量详解

  • 前言
  • 一、变量是什么?
    • 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;
}

此时就会报错如下:
在这里插入图片描述
如果将printf函数放入if语句{ }中就可以打印
代码如下(示例):

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

此时就会打印成功:
在这里插入图片描述

(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;
}

编译结果如下:
在这里插入图片描述
我们可以发现不论是哪里的printf函数都将j的值打印出来了,这就是全局变量作用

(3)两者重点

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

代码如下(示例):

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

编译结果如下:
在这里插入图片描述

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;
}

编译结果如下:
在这里插入图片描述
就会出现a重定义,无法修改

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

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

代码如下(示例):

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

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

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

代码如下(示例):

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

编译结果如下:
在这里插入图片描述
为了将标识符与变量名区别开来,习惯上标识符全部用大写字母表示。程序中用双引号括起来的宏在预处理的时候是不会被宏替换的。因为在 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}    

编译结果如下:
在这里插入图片描述
当然你也可以直接在定义的时候直接定义初始大小,也是可以的

#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;
}    

编译结果如下:
在这里插入图片描述

总结

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


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部