根据变量的作用域,可以分为:
1.局部变量:
1> 定义:在函数(代码块)内部定义的变量(包括函数的形参)
2> 作用域:从定义变量的那一行开始,一直到代码块结束
3> 生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收
4> 没有固定的初始值
2.全局变量
1> 定义:在函数外面定义的变量
2> 作用域:从定义变量的那一行开始,一直到文件结尾(能被后面的所有函数共享)
3> 生命周期:程序一启动就会分配存储空间,程序退出时才会被销毁
4> 默认的初始值就是0
例如,
#include <stdio.h>
int age;
void test()
{
int age;
age = 10;
}
int main()
{
printf("%d\n", age);// 0
int age = 20;
printf("%d\n", age);// 20
test();
printf("%d\n", age);// 20
return 0;
}
// 全局变量:a、b、c
// 局部变量:v1、v2、e、f
#include <stdio.h>
// 变量a的初值是10
int a = 10;
// 变量b的初值是0
// 变量c的初值是20
int b , c = 20;
int sum(int v1, int v2)
{
return v1 + v2;
}
void test()
{
b++;
int i = 0;
i++;
printf("b=%d, i=%d\n", b, i);
}
int main()
{
test();
test();
test();
int e = 10;
{
{
int f = 30;
}
}
return 0;
}
枚举
枚举是C语言中的一种基本数据类型,并不是构造类型,它可以用于声明一组常数。当一个变量有几个固定的可能取值时,可以将这个变量定义为枚举类型。比如,你可以用一个枚举类型的变量来表示季节,因为季节只有4种可能的取值:春天、夏天、秋天、冬天。
枚举的一般形式为:enum 枚举名 {枚举元素1,枚举元素2,……};
enum Season {spring, summer, autumn, winter};
跟结构体一样,有3种方式定义枚举变量
1.先定义枚举类型,再定义枚举变量
enum Season {spring, summer, autumn, winter};
num Season s;
2.定义枚举类型的同时定义枚举变量
enum Season {spring, summer, autumn, winter} s;
3.省略枚举名称,直接定义枚举变量
enum {spring, summer, autumn, winter} s;
上面三种方式定义的都是枚举变量s
#include <stdio.h>
int main()
{
enum Sex { Man, Woman, Unkown};
// 0男 1女 -1不详
//int sex = 3;
//enum Sex s = Unkown;
// 1.定义枚举类型
enum Season
{
spring = 1,
summer,
autumn,
winter
};
// 2.定义枚举变量
enum Season s = 100000;
printf("%d\n", s);
return 0;
}
数据类型总结
1.int
1> long int、long:8个字节 %ld
2> short int、short:2个字节 %d %i
3> unsigned int、unsigned:4个字节 %zd
4> signed int、signed、int:4个字节 %d %i
2.float\double
1> float :4个字节 %f
2> double:8个字节 %f
3.char
1> 1个字节 %c %d
2> char类型保存在内存中的是它的ASCII值
'A' --> 65
二、构造类型
1.数组
1> 只能由同一种类型的数据组成
2> 定义:数据类型 数组名[元素个数];
2.结构体
1> 可以由不同类型的数据组成
2> 先定义类型,再利用类型定义变量
三、指针类型
1.变量的定义
int *p;
2.间接操作变量的值
int a = 10;
p = &a;
*p = 20;
四、枚举类型
使用场合:当一个变量只允许有几个固定取值时