C语言-结构体

1.共用体:

union //联合--共用体

早期的时候,计算机的硬件资源有限,

能不能让多个成员变量 公用同一块空间

//使用方式 类似 结构体 --- 也是构造类型

struct 结构体名

{

成员变量名

};

union 共用体名

{

成员变量名

}; //表示构造了一个共用体类型

//定义变量

//定义指针

//定义数组

//做函数形参

//做函数返回值类型

注意:

1.共用体类型的大小 = 最大的成员的大小

2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值

3.共用体成员的访问方式 和 结构体一样

4.共用体因为公用同一块空间

赋值时,后赋值的会影响前面赋值的结果

5.用途

a.节省空间

校园人员管理系统

struct student

{

char name[20];

int sno;

float score;

};

struct teacher

{

char name[20];

int tno;

float salary;

};

struct member

{

char name[20];

int no;

union

{

float salary;

float score;

}data;

};

struct member s;

printf("score = %f\n",s.data.score);

struct member t;

printf("score = %f\n",s.data.salary);

b.数据转换

192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值

#include <stdio.h>

union Ip

{

unsigned char ip[4];

unsigned int iip;

};

int main(int argc, const char *argv[])

{

union Ip d = {192,168,0,59};

printf("ip = %#x\n",d.iip);

return 0;

}

判断大小端

2.枚举

枚举 --- 将变量的可能值(常量值) 一一列举出来

将有关联的常量值,一一列举出来,组合成一个枚举类型

enum 枚举名

{

枚举值

//sun,mon,tue,wed,thu,fri,sat

};

//构造了一个枚举类型

注意:

1.枚举类型 本质是 用int型数据表示的

枚举类型 设计的不严谨的地方

如果一个变量只有几种可能的值,则可以定义为枚举类型。

所谓"枚举"是指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内。

枚举 --- 提高代码可读性

typedef //type define

表示给已有类型起别名

struct stu

{

};

struct stu s;

union demo

{

};

union demo d;

typedef struct stu s; //s是struct stu 这个类型的别名

s s1; //定义了一个 struct stu的变量

typedef void (*sighandler_t)(int);

sighandler_t signal(int signum, sighandler_t handler);

void (*signal(int signum, void (*handler)(int) ))(int) ;

typedef int array_t[4]; //一维数组

array_t b[3]; //array_t => int[4]

位运算:

指的是二进制位上的运算

用途:

嵌入式 --- 位运算 非常普遍

操作硬件

c语言位运算:

& 与

| 或

^ 异或

~ 取反

<< 左移

>> 右移

& 与

运算规则: 一假则假

| 或

运算规则: 一真则真

^ 异或

运算规则: 相同为0 不同为1

<< 左移 a<<n

运算规则: 将 左操作数a 左移 n位

左移一位 相当于 结果乘以2

右移:

要看 要移动的数据的类型

看是有符号 --- 最高位补符号位 //算术右移

无符号 --- 最高位补0 //逻辑右移

相关推荐
seabirdssss1 小时前
错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
java·开发语言
gnawkhhkwang1 小时前
io_getevents 和 io_pgetevents 系统调用及示例
linux·c语言·开发语言
喵手1 小时前
使用ASIWebPageRequest库编写Objective-C下载器程序
开发语言·macos·objective-c
weixin_456904272 小时前
C#泛型委托讲解
开发语言·c#
君莫笑几人回2 小时前
关于记录一下“bug”,在做图片上传的时候出现的小问题
java·开发语言·spring boot
rockmelodies2 小时前
RSA 解密逻辑
开发语言·python
许泽宇的技术分享3 小时前
「一键召唤 007」:开源多智能体 JoyAgent-JDGenie 如何让你的 AI 产品从 Demo 到 真香 只差 Ctrl+C / Ctrl+V?
c语言·人工智能·开源
澡点睡觉3 小时前
golang的包和闭包
开发语言·后端·golang
Dxy12393102164 小时前
python创建一个excel文件
开发语言·python·excel
朝朝又沐沐4 小时前
算法竞赛阶段二-数据结构(40)数据结构栈的STL
开发语言·数据结构·c++·算法