文章目录
- 第三章 常量与变量
- 前言
- 1、常量及常量的类型
- 1.1 字符常量
- 1.2 整型常量
- 1.3 浮点型常量
- 1.4 字符串常量
- 1.5 枚举常量
- 2 、变量及变量的类型
- 2.1 全局变量
- 2.2 局部变量
- 2.3 静态变量
- 2.4 常变量
- 3、变量的存储类型
- 3.1 自动变量(局部变量)
- 3.2 静态变量
- 3.3 寄存器变量(自动变量、局部变量)
- 4、变量交换的方法
- 4.1 空瓶法:
- 4.2 和数法
- 4.3 直接输入法
- 5、变量的命名(常用匈牙利命名法)
- 6、关键字
- 总结
前言
在整个程序的运行过程中,没有变化且不能变化的,我们称之为常量。
在程序运行期间,可以改变并且有可能会改变的,我们称之为变量。
1、常量及常量的类型
常量即常数,表示固定的值,在程序执行期间不会改变。这些固定的值,又叫做字面量。常量可以是任何的基本数据类型。
- 字符常量 如’6’,‘a’,‘F’(不能是中文,例如:‘男’,因为一个汉字和全角的符号占两个字节。)
- 整型常量 如6,27,-299
- 浮点型常量 如5.43,-2.3,5.67,6.0
- 字符串常量 如"625",“女”,“nanabc”,“西施”
- 枚举常量
注:前缀指定基数:
- 0x 或 0X 表示十六进制;
- 0 表示八进制;
- 不带前缀则默认表示十进制。
1.1 字符常量
字符常量是括在单引号中,例如,‘x’ 可以存储在char 类型的简单变量中。字符常量可以是一个普通的字符(例如 ‘x’)、一个转义****字符(例如 ‘t’),或一个通用的字符(例如 ‘u02C0’)。在 C 中,有一些特定的字符,当它们前面有反斜杠时,它们就具有特殊的含义,被用来表示如换行符(n)或制表符(t)等。
1、转义字符的含义:
- 字符
- ’ ’ 字符
- " " 字符
- ? ? 字符
- a 警报铃声
- b 退格键
- f 换页符
- n 换行符
- r 回车
- t 水平制表符
- v 垂直制表符
- ooo 一到三位的八进制数
- xhh . . . 一个或多个数字的十六进制数
2、转义序列字符实例:
#includeint
main()
{
printf("HellotWorldnngggggn");
return 0;
}
1.2 整型常量
可以带一个后缀,后缀是 U 和 L 的组合,U 表示无符号整数(unsigned),L 表示长整数(long)。后缀可以是大写,也可以是小写,U 和 L 的顺序任意。
1、整数常量实例:
-
22
-
25u
-
0xFeL
-
08
-
02UU
2、各类型整数常量实例:
- 88
- 0113
- 0x43b
- 10
- 10u
- 10l
- 20ul
浮点常量由整数部分、小数点、小数部分和指数部分组成。可以使用小数形式或者指数形式来表示浮点常量。当使用小数形式表示时,必须包含整数部分、小数部分,或同时包含两者。当使用指数形式表示时, 必须包含小数点、指数,或同时包含两者。带符号的指数是用 e 或 E 引入的。
浮点常量实例:
- 3.14159
- 314159E-5L
- 510E
- 210f
- .e55
如"625",“女”,“nanabc”,“西施”。
1.5 枚举常量C语言中提供了一种特殊的整型,枚举类型。其关键词为 enum 。2 、变量及变量的类型
在程序运行期间,可以改变并且有可能会改变的,我们称之为变量。
变量的类型:
- 全局变量
- 局部变量
- 静态变量
- 常变量
2.1 全局变量
global variables
1、作用范围:
- 定义在所有函数体外;
- 全局变量不初始化将自动赋值为0;
- 全局变量的作用域是从定义行开始的,到文件结束;
2、生命周期:
- 开始:主函数main()执行之前;
- 结束:主函数main()结束;
3、特点:
- 全局变量的作用范围与生命周期保持一致。
- 全局变量可以用extern跨文件调用。eg: extern int a;
local variable or auto variable
1、举例:
- 形式参数
- 定义在函数体内的变量,也成为自动变量,由关键字auto说明,可以省略
- 定义在复合语句中的变量
2、作用范围:
定义在函数体内。
3、生命周期:
- 开始:函数被调用。
- 结束:函数结束。
局部变量被释放后,之前对应的内存空间成为公共区域。
2.3 静态变量static variables
如static int b = 10;//不可以跨文件调用。
静态变量加在局部变量之前,延长局部变量的生命周期到整个程序运行结束。
静态变量的生命周期在全局,作用范围在函数内部,不一致。
原理:首先判断局部变量是否已经分配过空间,如果没有则进行分配;如果已经分配过了(上次调用函数后变量没有被释放),则不再分配空间。
注:静态变量的使用可以避免污染全局空间,使各个程序员编写的程序更好的兼容。
2.4 常变量const variables
eg: const int a=10;或者 int const a=10;其作用是将变量a恒等于10。
const 是 constant 的缩写,意思是“恒定不变的”!它是定义只读变量的关键字,或者说 const 是定义常变量的关键字。用 const 定义常变量的方法很简单,就在通常定义变量时前面加 const 即可,如:
const double pi = 3.1415926;
用 const 定义的变量的值是不允许改变的,即不允许给它重新赋值,即使是赋相同的值也不可以。所以说它定义的是只读变量。这也就意味着必须在定义的时候就给它赋初值,如果程序中试图改变它的值,编译的时候就会报错。
3、变量的存储类型-
变量的存储类型就是指变量存储在什么地方。有3个地方可以用于存储变量:普通内存、运行时堆栈、硬件寄存器。变量的存储类型决定了变量何时创建、何时销毁以及它的值能保持多久,也就是决定了变量的生命周期。
-
C语言根据变量的存储类型的不同,可以把变量分为:自动变量、静态变量、寄存器变量。
1、定义:自动变量是存储在堆栈中的。
2、哪些是自动变量:被关键字auto修饰的局部变量都是自动变量,但是C语言较少使用这个关键字,因为所有的局部变量在默认情况下都是自动变量。
3、生命周期:在程序执行到声明自动变量的代码块(函数)时,自动变量才被创建;当自动变量所在的代码块(函数)执行完毕后,这些自动变量就会自行销毁。如果一个函数被重复调用,这些自动变量每次都会重新创建。
1 void test(int a, int b)
{
2 int c = a + b;
3
4 auto int d;
5 }
3.2 静态变量
- 定义:静态变量是存储在静态内存中的,也就是不属于堆栈。
- 哪些是静态变量:所有的全局变量都是静态变量 、被关键字static修饰的局部变量也是静态变量
- 生命周期:静态变量在程序运行之前创建,在程序的整个运行期间始终存在,直到程序结束。
1 #include2 3 int a; 4 5 void test() { 6 static int b = 0; 7 b++; 8 9 int c = 0; 10 c++; 11 12 printf("b=%d, c=%d n", b, c); 13 } 14 15 int main() { 16 int i; 17 // 连续调用3次test函数 18 for (i = 0; i<3; i++) { 19 test(); 20 } 21 22 return 0; 23 }
运行结果:
3.3 寄存器变量(自动变量、局部变量)-
定义:存储在硬件寄存器中的变量,称为寄存器变量。寄存器变量比存储在内存中的变量访问效率更高(默认情况下,自动变量和静态变量都是放在内存中的)。
-
哪些变量是寄存器变量:
①被关键字register修饰的自动变量都是寄存器变量。
②只有自动变量才可以是寄存器变量,全局变量和静态局部变量不行。
③寄存器变量只限于int、char和指针类型变量使用 。
-
生命周期:因为寄存器变量本身就是自动变量,所以函数中的寄存器变量在调用该函数时占用寄存器中存放的值,当函数结束时释放寄存器,变量消失。
-
使用注意:
- 由于计算机中寄存器数目有限,不能使用太多的寄存器变量。如果寄存器使用饱和时,程序将寄存器变量自动转换为自动变量处理。
- 为了提高运算速度,一般会将一些频繁使用的自动变量定义为寄存器变量,这样程序尽可能地为它分配寄存器存放,而不用内存。
1 int main() {
2 register int a;//变量a是个寄存器变量。
3 return 0;
4 }
4、变量交换的方法
题目:
输入两个整数a和b,交换二者的值,然后输出。
分析:
先存入变量a和b,然后交换。方法如下:
#include4.2 和数法int main() { int a,b,t; //t相当于一个空瓶 scanf("%d%d",&a,&b); t = a; //将a倒入空瓶t中 a = b; //再将b倒入a中 b = t; //最后将t倒入b中,从而实现了a和b的交换 printf("%d %d",a,b); return 0; }
#includeint main() { int a,b; scanf("%d%d",&a,&b); a = a + b; b = a - b; a = a - b; printf("%d %d",a,b); return 0; }
如果设a房间里放的数是A,b房间里放的数是B。则有:
a = A + B
b = A + B - B
a = A + B - ( A + B - B)
以此达到换房的目的。
#includeint main() { int a,b; scanf("%d%d",&a,&b); printf("%d %d",b,a); return 0; }
推荐使用空瓶法。
5、变量的命名(常用匈牙利命名法)变量名属于标识符,需要符合标识符的命名规范,如下:
- 变量名的第一个字符必须是字母或下划线,不能是数字和其它字符。
- 变量名中的字母是区分大小写的。比如 a 和 A 是不同的变量名,num 和 Num 也是不同的变量名。
- 变量名绝对不可以是C语言关键字
关键字也称为保留字,共32个,也就是说这些单词在C语言中有特别的含义,程序员不能把它用于变量或函数的命名。
auto :声明自动变量 break:跳出当前循环 case:开关语句分支 char :声明字符型变量或函数返回值类型 const :声明只读变量 continue:结束当前循环,开始下一轮循环 default:开关语句中的“默认”分支 do :循环语句的循环体 double :声明双精度浮点型变量或函数返回值类型 else :条件语句否定分支(与 if 连用) enum :声明枚举类型 extern:声明变量或函数是在其它文件或本文件的其他位置定义 float:声明浮点型变量或函数返回值类型 for:一种循环语句 goto:无条件跳转语句 if:条件语句 int: 声明整型变量或函数 long :声明长整型变量或函数返回值类型 register:声明寄存器变量 return :子程序返回语句(可以带参数,也可不带参数) short :声明短整型变量或函数 signed:声明有符号类型变量或函数 sizeof:计算数据类型或变量长度(即所占字节数) static :声明静态变量 struct:声明结构体类型 switch :用于开关语句 typedef:用以给数据类型取别名 unsigned:声明无符号类型变量或函数 union:声明共用体类型 void :声明函数无返回值或无参数,声明无类型指针 volatile:说明变量在程序执行中可被隐含地改变 while :循环语句的循环条件
总结
提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。



