【C语言 学习记录】八、其他数据类型

本文详细介绍了C语言中结构体的定义、变量使用、赋值、数组、指针、共用体的概念,以及枚举类型的定义和typedef的作用。
摘要由CSDN通过智能技术生成

1.结构体

①   结构体的定义
        struct 结构体名{
            类型说明符 成员名1;
            类型说明符 成员名2;
        };

/*
struct 结构体名{
	类型说明符 成员名1;
	类型说明符 成员名2;
};
*/
struct student{
	int num;
	char name[20];
	char sex;
	float score;
};

②   结构体变量

  • 结构体变量的定义
    //① 先定义结构体类型,再定义结构体变量
    struct student{
    	int num;
    	char name[20];
    };
    struct student boyl,boy2;
    
    //② 定义结构体类型的同时,定义结构体变量
    struct student{
    	int num;
    	char name[20];
    }boyl,boy2;
    
    //③ 省略结构体名,直接定义结构体变量
    struct{
    	int num;
    	char name[20];
    }boyl,boy2;
  • 结构体变量的引用
           结构体变量名.成员名;
    //结构体变量名.成员名;
    	boyl.num;
    	boy2 .name;
  • 结构体变量的赋值值
           只能对结构体变量的成员进行操作,不能对结构体变量整体进行操作
    //只能对结构体变量的成员进行操作
    //不能对结构体变量整体进行操作
    	boy1.num=123;
    	boy2 .name="张三";
  • 结构体变量的初始化
           struct 结构体变量={初始化数据};
    //struct 结构体变量={初始化数据};
    struct student{
    	int num;
    	char name[20];
    }boy={123,"张三"};
    
    //or
    struct student{
    	int num;
    	char name[20];
    }; 
    struct student boy={123,"张三"};

③   结构体数组

  • 结构体数组的定义
    //① 先定义结构体类型,再定义结构体数组
    struct student{
    	int num;
    	char name[20];
    };
    struct student boy[2];
    
    //② 定义结构体类型同时,定义结构体数组
    struct student{
    	int num;
    	char name[20];
    }boy[2];
    
    //③ 省略结构体名,直接定义结构体数组
    struct {
    	int num;
    	char name[20];
    }boy[2];
  • 结构体数组的引用
           结构体数组名[数组元素的下标].成员名;
    //结构体数组名[数组元素的下标].成员名;
    	boy[0].num;
  • 结构体数组的初始化
           struct 结构体数组={初始化数据};
    //struct 结构体数组={初始化数据};
    struct student{
    	int num;
    	char name[20];
    }boy[2]={{123,"张三"},{456,"李四"}};

④   结构体指针

  • 结构体指针的定义
           struct 结构体变量名 *结构体指针变量名;
    //struct 结构体变量名 *结构体指针变量名;
    	struct student *p;
  • 结构体指针的引用
           结构体指针变量名=结构体变量地址;
    //结构体指针变量名=结构体变量地址;
    	p=&boy1;
  • 结构体指针变量的赋值
           ① (*结构体指针变量).成员名;
           ② 结构体指针变量->成员名;
    //① (*结构体指针变量).成员名;
    	(*p).num;
    //② 结构体指针变量->成员名;
    	p->name;

2.共用体(联合体)

①   共用体的定义
        union 共用体名{
            类型说明符1 成员名1;
            类型说明符2 成员名2;
        }; 

/*
union 共用体名{
	类型说明符1 成员名1;
	类型说明符2 成员名2;
}; 
*/
union data{
	int a;
	char b;
	float c;
}; 

②   共用体变量

       所有成员共用一段内存地址。

       定义时不能初始化!!!

  •  共用体变量的定义
    //① 先定义共用体类型,再定义该类型的共用体变量
    union data{
    	int a;
    	char b;
    };
    union data a,b; 
    
    //② 定义共用体类型的同时,定义该类型的共用体变量
    union data{
    	int a;
    	char b;
    }a,b;
    
    //③ 省略共用体名,直接定义共用体变量
    union{
    	int a;
    	char b;
    }a,b;
  • 共用体变量的引用

           ① 共用体变量.成员名;
           ② 共用体变量->成员名;

    //① 共用体变量.成员名;
    	a.a;
    //② 共用体变量->成员名;
    	a->a;

3.枚举类型

①   枚举类型的定义

       枚举类型数据:一个变量只有几种可能的值,且只能取其中之一。

        enum枚举类型名{枚举元素1,枚举元素2};

//enum枚举类型名{枚举元素1,枚举元素2};
	enum weekday{sun,mon,tue,wed,thu,fri,sat};

②   枚举变量

  •  枚举变量的定义
    //① 先定义枚举类型,再定义该类型的枚举变量
    	enum weekday{sun,mon,tue,wed,thu,fri,sat};
    	enum weekday a,b;
    	
    //② 定义枚举类型的同时,定义该类型枚举变量
    	enum weekday{sun,mon,tue,wed,thu,fri,sat}a,b;
    	
    //③ 省略枚举类型名,直接定义枚举变量
    	enum{sun,mon,tue,wed,thu,fri,sat}a,b;
  • 枚举变量的赋值

           ① 枚举元素可在定义枚举类型时初始化(默认为顺序号)
           ② 枚举元素是常量,不可赋值
            只能把枚举元素赋给枚举变量,不能直接赋枚举变量的值
           ④ 枚举值可以比较大小

    //① 枚举元素可在定义枚举类型时初始化(默认为顺序号)
    	enum weekday{sun=7,mon=l,tue,wed,thu,fri,sat};
    
    //② 枚举元素是常量,不可赋值
    
    //③ 只能把枚举元素赋给枚举变量,不能直接赋枚举变量的值
    	a=sun;
    	a=(enum weekday)7;
    
    //④ 枚举值可以比较大小
    	enum weekday{sun=7,mon=l,tue,wed,thu,fri,sat};
    	int day;
    	for(day=sun;day<=sat;day++)

4.typedef定义类型

宏定义:预处理时完成。

typedef:编译时完成(更为灵活方便)。

//typedef 类型名 新类型名;
	typedef int INT;   //定义 INT 为int 的别名

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

kkkkkkkiko0401

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值