------期待与您交流! -------
一、C语言数据类型
二、变量类型
1. 根据变量的作用域,变量可分为局部变量和全局变量
2. 局部变量(函数内部定义的)
(1)作用域:从定义变量的那一行开始,到代码块结束
(2)生命周期:从定义变量的那一行开始分配存储空间,代码块结束后,就会被回收
(3)没有固定的初始值
(4)函数的形参也是局部变量
3. 全局变量(函数外面定义的)
(1)作用域:从定义变量的那一行开始,一直到文件结束,能被后面的所有函数共享
(2)生命周期:程序启动就会分配存储空间,程序退出时才会被销毁
(3)默认的初始值是0
三、构造体(数组,结构体,共用体,枚举)
1. 结构体(struct)
(1)结构体是一种数据类型,它属于构造体
(2)它可以由不同类型的数据构成,而数组只能存放同一种类型的数据
(3)定义: 结构体类型(自定义) 结构体变量名(根据结构体类型定义)
struct person //结构体类型(自定义)(并不会分配存储空间)
{
int age; //年龄
double height ; //身高
char * name ; //姓名
};
struct person p={20,1.67,"jack"}; //p是结构体变量名(根据结构体类型定义)(真正开始分配存储空间)
{ }里面的三个变量称为结构体的属性或成员 (而且三个成员按顺序存储)
(4)p.age=20 (点语法) //利用点语法可以访问或者修改结构体的内部属性
(5)只能在定义结构体变量的同时给它赋值
struct person p
struct person p={20,1.67,"jack"}; //这种写法是错误的
(6)p共占 4+8+8=20(补4)=24字节 (补齐算法:结构体所占存储空间必须是最大成员字节数的倍数)
(7)其它定义方式
1) struct person //定义结构体类型
{
int age; //年龄
double height ; //身高
char * name ; //姓名
} p; //利用新定义好的类型定义结构体变量
可以利用定义好的结构体类型,定义其它结构体变量 struct person p2
2)struct { //省略了类型名称
int age; //年龄
double height ; //身高
char * name ; //姓名
} p;
(8)结构体类型不可以重复定义
(9)结构体类型的作用域:从定义类型的那一行开始直到代码块结束
1)定义在函数外面:全局有效
2)定义在函数(代码块)内部:局部有效
(10)结构体数组
struct person
{
int age; //年龄
double height ; //身高
char * name ; //姓名
} p;
struct person [3]=
{
{20,1.67,"jack"};
{23,1.66,"jone"};
{25,1.63,"rose"};
}
如果要修改rose的年龄,不能用 person [2]= {88,1.63,"rose"}; 只能用person [2].age=88(11)指向结构体的指针
struct student
{
int age; //年龄
int no; //学号
} stu;
struct student stu={1,20};
struct student *p; //指针变量p指向 student类型的数据p=&stu; //指针变量p指向了stu变量
*p.age p->age stu.age 都可以访问age的值 修改age的值用p->age=30
(12)嵌套定义
int main()
{
struct Date
{
int year; //年
int month; //月
int dat; //日
};
struct student
{
int no; //学号
struct Date birthday; //生日
struct Date ruxuedate; //入学日期
};
struct student stu={1,{2001,9,10},{2010,3,4}};
return 0;
}
2. 枚举(enum)
(1)定义方式 (先定义枚举类型,再定义枚举变量)
enum season //定义枚举类型
{
spring;
summer;
autum;
winter;
}
enum season s=summer; //s为定义的枚举变量
(2)使用场合:当一个变量的取值只允许有几个固定取值时