600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > 一 C语言[typedef 结构体 共用体 枚举体]

一 C语言[typedef 结构体 共用体 枚举体]

时间:2023-05-26 03:44:56

相关推荐

一 C语言[typedef 结构体 共用体 枚举体]

一、typedef

解释:适用于改变定义名,在程序更复杂时,能做到更灵活

格式:typedef int IOT

typedef int IOT;IOT a=5;printf("%d\n",a);//5typedef float OP;OP b=1.1;printf("%f",b);//1.10000

typedef struct{int a;}STUDENT;// 实际上是给struct{int a;};// 起了别名为STUDENT

二、结构体

1.结构体初始化

解释:结构体里面里面写着基本类型,同时也可以嵌套其它结构体

struct student{int age;int power;char name[4];};

2.结构体定义

A:外面定义

struct stu stu1, stu2;

B:初始时定义

struct student{int age;int power;char name[4];}stu1, stu2;

3.结构体的访问

格式:stu1.age=55;

解释:使用了成员选择运算符号,即’.

注意:里面字符串数组只能赋值为地址,即stu1.name="abcd"是错误的因为,“abcd”不是地址,其在电脑也没有地址,可以这样写strcpy(stu1.name,"jack");

4.指针对结构体的访问

格式:

struct student stu1;struct student *p;p=&stu1;

访问:

A:

printf("%d",(*p).age);

B:

解释:此为成员选择符号

printf("%d\n",p->age);

5.指向结构体的指针做函数参数

区别:直接传递结构体不能进行修改原值,需要指针来进行操作

注意点:

setaiyou(&ay);取地址符号指向地址struct Aiyou写在main外面

#include <stdio.h>#include <stdlib.h>struct Aiyou{int year;char* name;char* zdg;};void setaiyou(struct Aiyou *aayy){printf("专辑名称:%s,主打歌:%s,发行时间:%d\n", aayy->name, aayy->zdg, aayy->year);}int main() {struct Aiyou ay;ay.year = ;ay.name = "周杰伦的床边故事";ay.zdg = "告白气球";setaiyou(&ay);return 0;}

6.跨文件传递结构体指针做函数参数

解释:与5类似,但是值得注意的定义的结构体必须在每个文件里面都要出现,可以把他写入头文件

structA.h

struct student{unsigned int student_number;char name[6];int chinese;int math;int english;};

main.c

#include <stdio.h>#include <stdlib.h>#include "structA.h"void setaiyou(struct Aiyou *aayy);int main() {struct Aiyou ay;ay.year = ;ay.name = "周杰伦的床边故事";ay.zdg = "告白气球";setaiyou(&ay);return 0;}

appp.c

#include "structA.h"void setaiyou(struct Aiyou *aayy){printf("专辑名称:%s,主打歌:%s,发行时间:%d\n", aayy->name, aayy->zdg, aayy->year);}

三、共用体

解释:使用定义与访问与结构体几乎相同

区别:结构体的各个成员会占用不同的内存,互相之间没有影响;而共用体的所有成员占用同一段内存,修改一个成员会影响其余所有成员;同一时刻只能保存一个成员的值,如果对新的成员赋值,就会把原来成员的值覆盖

union student{int age;int power;char name[4];};

四、枚举体

解释:①里面的值都是整型;②后一个值总比前一个值大1(从0开始);③可以自定义数值的大小;④值不可以改变

enum week{one,two,three,four,five,six,seven};//one=0,two=1...enum week{one=7,two,three,four,five,six,seven};//two=8,three=9..

访问:

解释:直接输名就可以

printf("%d",six);

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。