目录
一、变量
1.格式
变量的格式:存储类型+数据类型+变量名
(1)存储类型:
决定变量存放的位置
存储类型有auto,static,extern,register四种
auto(一般隐藏) | static(静态) | extern(外部) | register(寄存器) |
1.进入代码块时系统可以自己为变量分配内存,退出块时,系统清除分配的内存,变量值丢失,不保留。 2.若重新进入则重新分配。 | 1.在函数内部出现时:允许程序退出此函数时,函数内定义的局部变量保存其原有值。 2.在函数外部出现时:与extern相反,只允许本文件访问 | 1.在b文件中可以使用a文件定义的变量 2.不会消失,整个执行期间存在 eg : 在b文件输入extern int c;可以调用a文件中对变量c赋予的值。 | 1.目的是改善执行速度,可以把寄存器想象成宫廷剧中皇帝身边的“太监”,大臣递交文件需要经过他的手,而此种存储类型register,可以直接使用“太监”作为暂时的内存,加快执行速度。 2.数据类型默认是int(整型) |
(2)数据类型:
决定变量开辟空间的大小
常用的数据类型有:int,short,long,char,float,double
名字 | 所占字节 | 取值范围 | |
int | 整型 | 4 | -2^31~2^31-1 |
short | 短整型 | 2 | -2^15~2^15-1 |
long | 长整型 | 8 | -2^63~2^63-1 |
char | 字符型 | 1 | -2^7~2^7-1 |
float | 单精度浮点型 | 4 | -3.4e-38~3.4e+38 |
double | 双精度浮点型 | 8 | -1.7e-308~1.7e+308 |
可以使用sizeof计算数据类型所占空间大小:
#include <stdio.h> int main(int argc, char const *argv[]) { printf("%d\n", sizeof(int)); return 0; }
(3)变量名:
遵循标识符命名规则
命名规则:由数字、字母、下划线组成;
不能以数字开头;
不能和关键字重复;
最好见名知意;
2.分类:局部变量和全局变量
局部变量 | 全局变量 | |
存储位置 | 栈区 | 全局区(BSS,数据段) |
定义位置 | 函数体内部 | 函数体外部 |
未初始化时值 | 随机值 | 0 |
作用域 | 函数内部 | 整个程序 |
生命周期 | 同函数体共存亡 | 同整个程序共存亡 |
二、常量
1.整型常量
即使用int,short,long定义的常量,可以定义为八进制、十进制、十六进制
2.字符型常量
使用单引号包裹
将字符变量a定义为字符常量'q':
char a = 'q';
同时也可以使用ASCII码表中字符对应的八进制十进制十六进制数值来定义:
(其中的 \ 为转义字符,必须加上才能够定义)
char a = '\x41';//十六进制 char b = '\101';//八进制
3.字符串常量
使用双引号包裹,以\0结束,我们定义时不用输入\0作为结尾,但要知道在程序中默认添加了\0作为字符串结束标志,所以在定义时也要把\0做为一个字符长度算进去,"hello"长度为6。
char a[6] = "hello";
4.浮点型常量
即使用float,double定义的变量,为了方便可以了解C语言中指数的表示形式
#include <stdio.h> int main(int argc, char const *argv[]) { float a = 3.14e+9; printf("%f\n", a); return 0; }
希望此例子可以帮助你理解,e表示指数形式,后面10的几次方就写在e的后面,方便写一些比较麻烦的数值。
5.标识常量
(1)格式
#define SIZE 10
#define 宏名 表达式或变量或常量或代码段
(2)注意:
宏定义只是单纯的替换,不进行计算#include <stdio.h> #define N 6 #define M N + 2 int main(int argc, char const *argv[]) { printf("%d\n", N + M / 2 + 1);//原式 = 6 + 6 + 2 / 2 + 1 return 0; }