提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
文章目录
前言
一、结构体
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 |
---|---|
double | 4 |
int | 4 |
short | 2 |
char | 1 |
2.结构体大小必须为自身最大类型的整数倍
项目 | Value |
---|---|
double | 4 |
int | 4 |
short | 2 |
char | 1 |
三种对齐方式:
字节对齐 半子对齐 字对齐
二、共用体(联合体)
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*)#
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提供了大量能使我们快速便捷地处理数据的函数和方法。