18c语言——构造数据类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

一、结构体

1.定义结构体

(1)有名结构体定义

例:定义一个日期
struct date{
int year;
int month;
int day;
};

(2)无名结构体定义

struct {
int year;
int month;
int day;
};

(3)嵌套结构体定义

struct date_time{
struct date d;
struct time t;
};

2.定义结构体变量

struct date d;

3.结构体变量初始化

根据数据类型决定

(1)全局初始化

#include <stdio.h>
struct student{
	char name[256];
	char sex;
	int age;
	int score;
};
int main(void)
{
	struct student a = {"zhangsan",'m',15,88};
	return 0;
}

(2)局部初始化

	struct student a = {
	.name = "zhangsan";
	.score = 80;
	};

4.结构体元素的访问

结构体变量访问打点
结构体指针访问用->
类型由成员决定

5.结构体存储

内存对齐:浪费一定的内存空间,提升cpu的运行效率
1,结构体成员变量只能存放地址为自身基本类型长度整数倍的内存单元

项目Value
double4
int4
short2
char1

2.结构体大小必须为自身最大类型的整数倍

项目Value
double4
int4
short2
char1

三种对齐方式:
字节对齐 半子对齐 字对齐

二、共用体(联合体)

1.定义共用体

union s{
int a;
short b;
int c;
}
一个时刻只能用一个变量
应用于结构体传参

2.测试内存大小端

小端存储:内存低地址位存放低数据位
大端存储:内存低地址位存放高数据位
在这里插入图片描述
三种判断内存大小端的方式

#include <stdio.h>

union s{
	char a;
	int b;
};
int is_lit_endian1(int num)
{
	char*p = (char*)&num;
	if(*p == 0x11)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}
int is_lit_endian2(union s s1)
{
	if(s1.a)
	{
		return 1;
	}
	else
	{
		return 0;
	}
}
int is_lit_endian3(int num)
{
	char c = (char)num;
	if(c == 0x11)
	{
		return 0;
	}
	else
	{
		return 1;
	}
}
int main(int argc, const char *argv[])
{
	int num = 0x11223344;

	if(is_lit_endian1(num))
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}
	printf("=====================\n");

	union s s1;
	s1.a=1;
	if(is_lit_endian2)
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}

	printf("=====================\n");

	if(is_lit_endian3(num))
	{
		printf("小端\n");
	}
	else
	{
		printf("大端\n");
	}

	return 0;
}

三、枚举

1.定义枚举

enun 枚举名{
枚举常量名1,
枚举常量名2,
枚举常量名3,
枚举常量名4,

};
特性:
1.枚举类型变量的值,应该在枚举常量中选择其1
2.不给定初始化,确定为0

2.使用枚举

在项目中让代码可读性提高。

总结

提示:这里对文章进行总结:
例如:以上就是今天要讲的内容,本文仅仅简单介绍了pandas的使用,而pandas提供了大量能使我们快速便捷地处理数据的函数和方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值