1.全局变量是什么?
答:在所以函数外部定义的变量,称为全局变量.
2.有什么用?
答:用于存储一个需要存期存于内存,并需要改变的变量.
3.How to use?
答:跟普通变量没区别,只在位置的所有函数之外.
4.什么时候用?
答:当需要定义一个随程序一直存于内存中,并可以被其它函数共享变量的时候.
5.有什么特点?
答:a 生命周期跟随程序,程序启动创建,程序退出才会销毁.
b 作用域是其所在位置之下的所有函数,都可以共享并改变.
c 变量的使用遵循就近原则如果函数,都可以共享并改变.
d 如果没有初始化赋值,默认值是0;
6.结构体是什么?
答:是一种数据类型,是构造类型,里面可以存不同类型的数据.
7.有什么用?
答:用于封装不同数据类型到一个结构中,方便使用.
8.How to use ?
定义:结构体类型 struct 结构体类型{数据类型1 名称; 数据类型2 名称...}
定义结构体变量及赋值: struct 结构体类型 变量名={数据1,数据2...}
取值:变量名,结构体元素变量名, 赋值:变量名 结构体元素变量名=新值;
9.什么时候用?
当需要把相关联的不同数据类型封装起来一起使用的时候.
10.有什么特点?
e:可在定义结构体类型时同时定义结构体变量名,可定义匿名类型结构体.
f:同一作用域内不可重复定义 结构体类型和结构变量,匿名类型结构体除外.
g:可同时在函数内外定义一个类型,使用同样遵循就近原则,结构体变量也是如此.
struct Person {
char *name;
int age;
};
struct Person per1={"heima",19);
struct Persin per={"itcast",19);
return 0;
int add ( ){
struct Sun{
char *name;
int age;
}
11.结构体数组是什么?
答:是数组,只不是数组里每一个元素是结构体类型.
12.有什么用
答:用于存储多个有关联的结构体.
13.How to use?
定义及初始化赋值:struct 结构体类型 数组名[长度]={结构体1,结构体2};
如:struct Person {char *name; int age;};
取值:数组名[角标]; 单独赋值:数组名[角标]=新的结构体;
如:struct Person per3=arr[0];
14. 什么时候用?
答:当需要存储多个有关联的结构体,并作为一个整体使用时.
15.有什么特点
答:遵循数组的特点
int main(){
struct Person{
char *name;
int age;
};
struct Person per= {"itheima",2};
struct Person per1={"itcast",3};
struct Person arr[2]={"per,per1"};
printf("%s---%d\n",arr[1].name,arr[1].age);
return 0;
}
16 . 结构体指针是什么?
答: 是指针,不是指针类型而是结构体类型指针
17.有什么用?
用于存储结构体的地址,并操作地址对应的结构体空间的数据.
18.怎么用?
定义初始化赋值: struct 结构体类型 * 指针名=&结构体变量
For example: struct Person {char *name; int age;}; struct Person *p=&per;
取值 :(*指针名).结构体元素名; 指针名->结构体元素名;
赋值:(*指针名). 结构体元素名=新值; 指针名->结构体元素名=新值
For example: (*p).name, (*p).age; 或 p->age, p->name;
19. 什么时候用?
答:当需要使用指针操作结构体时.
20.有什么特点?
答:指针移动对结构体本身没有意义,结构体名并不包含第一个元素的地址.
结构体分配内存空间遵循两个原则 对齐原则或对齐算法.(增加cpu寻址效率)
1.每个元素的偏移量(当前元素首地址距离整个结构体首地址的字节数)必须是自己所占有字节数的整数倍,如果不够补齐上一个元素的字节数.
2.整个结构体的字节数必须是其最大元素所占字节的整数倍,如果不够,最后一个元素填充字节.
21. 枚举是什么?
答:是一种数据类型,称为枚举类型,是构造类型的一种,里面存的都是有别名的整型常量.
22.有什么用?
答:可以把多个整型常量以别名的形式封装成一个整体,便于别的变量识别并取值使用.
23.How to use ?
定义:1.定义枚举类型 enum 枚举类
int main(){
enum day{
MORNING, // 0
AFTERNOON, // 1
NIGHT, // 2
};
enum Day daystatus=MORNING;
// 取值:变量名=枚举元素名
daystatus=MORNING;
printf("daystatus=%d\n",daystatus);
daystatus=AFTERNOON;
printf("daystatus=%d\n",daystatus);
daystatus=NIGHT;
// 用普通变量//
int status=0 ; // 表示早上
int status=1; // 表示中午
int status=2; // 表示晚上
printf("daystatus=%d\n",daystatus);
int a; // 0表示关 1表示开,没有其他的取值
a=1;
a=0;
enum Status{
CLOSE,
OPEN,
}nowStatus=open;
nowStatus=OPEN;
nowStatus=CLOSE;
printf("a=%d--nowStatus=%d\n",a,nowStatus);
}
型{元素1,元素1,...};或{元素1=0,元素2=1};
2.定义枚举变量及赋值:enum 枚举类型 变量名=对应枚举里的一个元素名;
取值: 变量名=枚举元素名
24. 什么时候用?
答:当一个变量只要固定的多个int取值范围时.
25.有什么特点?
1.枚举类型值能是int值,且不能直接用int常量,需要用别名(建议全部大写)
2.如果不设定值,那么默认第一个元素是0,以此类推.
3.同一个作用域内不能出现重复的元素,不同的枚举类型也不行.
#include <stdio.h>
int main(){
enum LoveType{
MAN,
WOMEN,
MANANDWOMEN,
} myLoveType;
myLoveType=MAN;
printf("%d\n",myLoveType);
myLoveType=WOMEN;
printf("%d\n",myLoveType);
myLoveType=MENANDWOMEN;
printf("%d\n",myLoveType);
return 0;
}
|
|