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

一、typedef

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

    typedef int IOT;
    IOT a=5;
    printf("%d\n",a);//5
    typedef 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.指针对结构体的访问

格式:

  1. struct student stu1;
  2. struct student *p;
  3. p=&stu1;

访问:
A:

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

B:
解释:此为成员选择符号

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

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

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

注意点:

  1. setaiyou(&ay);取地址符号指向地址
  2. 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 = 2016;
       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 = 2016;
       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);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值