首页 > 代码库 > 【Xcode学C-5】结构体、全局局部变量以及枚举变量的知识点
【Xcode学C-5】结构体、全局局部变量以及枚举变量的知识点
一、全局变量和局部变量
(1)全局变量定义在函数外,局部变量在函数体内,前后作用域不同,生命周期也不同。
二、结构体
(1)定义了结构体不会分配内存,只有用结构体定义了变量才会为这个变量分配内存。第一个成员的地址就是结构体变量的地址。
int main(int argc, const char * argv[]) { //结构体的格式 struct person{ int age; char *name; }; //定义变量 struct person p1; //赋值,多种赋值方式,比如 struct person p2={10,"tom"}; p1.age=28; p1.name="andy"; //访问 printf("%s\n",p1.name); return 0; }
(2)分配的空间大小是占用最大字节成员变量的倍数。比如上述结构体,int是4字节,char *是8字节,一共是12字节,但为了要是最大字节成员的整数倍,所以每个结构体变量一共是16字节。
(3)还有很多种方式定义结构体变量。除了以上方法,还可以在定义结构体的同时在后面分号前面加个p,直接定义一个变量。还有一种方式是匿名结构体,这种匿名结构体只能一次性定义变量,因为后续不能复用。
(4)结构体数组。就是在定义结构体变量的时候批量定义并初始化。如struct person p[3]={{},{},{}};。但很少用。结构体数组只能在定义的时候初始化。
(5)结构体和数组一样,不可以先定义变量,然后再赋值。
(6)指向结构体的指针,因为是指向结构体的,所以定义方式就是struct person *p;即可。p=&p1;就是把这个指针指向p1。重点是如何取值。可以用(*p).age;但是更普遍的是p->age。
(7)结构体,当然可以嵌套使用。
(8)结构体相比数组最大特点是,里面可以存放不同类型数值,而数组只能是同种数值。
三、枚举变量
int main(int argc, const char * argv[]) { //尽量不要使用数值,所有数值都是魔鬼数值 //int gender=0; //定义一个枚举 //我们可以给MAN=100,那么下面的值是一次递增的,即WOMAN是101 enum Gender{ MAN, WOMAN }; //使用并定义一个枚举变量gender1 enum Gender gender1=MAN; return 0; }
【Xcode学C-5】结构体、全局局部变量以及枚举变量的知识点
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。