嵌入式学习Day14---C语言进阶

目录

一、构造类型

1.1.结构体 

        1.存储

        2.输入输出(传参) 

        3.结构体数组 

1.2.共同体(联合体)

        1.格式 

        2.存储

         3.测试一个平台是打端还是小端

1.3.枚举 

        1.格式

        2.特点

二、位运算(操作二进制)

        2.1.&

        2.2.|

        2.3.^

        2.4.~(取反)

        2.5.<<

        2.6.>>

        2.7.运算符优先级

三、总结


一、构造类型

1.1.结构体 

        1.存储

        存放结构体成员变量,必须保证前面的长度为成员变量所占空间大小的整数倍;

        结构体整体的大小必须为最大类型长度的整数倍 ;

        2.输入输出(传参) 

                以例子说明

                (1)定义日期的结构体,封装一个函数给结构体成员变量赋值(不传参数,在函数内部定义结构体变量,赋值后,返回结构体变量的值,在主函数接收),封装一个函数(传递结构变量)打印结构体成员变量。

#include <stdio.h>struct mdate
{int year;int month;int day;
};struct mdate InPutNum(void)
{struct mdate tt;scanf("%d%d%d", &tt.year, &tt.month, &tt.day);return tt;
}int OutPutNum(struct mdate t)
{printf("%d-%d-%d\n", t.year, t.month, t.day);return 0;
}int main(void)
{struct mdate t;t = InPutNum();OutPutNum(t);//	printf("%d-%d-%d\n", t.year, t.month, t,day);return 0;
}

                (2)定义日期的结构体,封装一个函数给结构体成员变量赋值(传递结构体变量的地址)进行值的输入,封装一个函数(传递结构变量的地址)打印结构体成员变量。

#include <stdio.h>struct mdate
{int year;int month;int day;
};int InPutNum(struct mdate *d)
{scanf("%d%d%d", &d->year, &d->month, &d->day);return 0;
}int OutPutNum(struct mdate *d)
{printf("%04d-%02d-%02d\n", d->year, d->month, d->day);return 0;
}int main(void)
{struct mdate d;InPutNum(&d);OutPutNum(&d);return 0;
}

 

        3.结构体数组 

        定义学生结构体,定义结构体数组变量录入三名学生的信息,使用数组传参的方式来输入输出学生的信息。 

#include <stdio.h>struct student 
{char name[32];char sex;int age;int score;
};int InPutAllStInof(struct student *p, int len)
{int i = 0;for(i = 0; i < len; i++){scanf("%s", p[i].name);scanf(" %c", &p[i].sex);scanf("%d", &p[i].age);scanf("%d", &p[i].score);}return 0;
}int PutAllStInof(struct student *p, int len)
{int i = 0;for(i =0; i < len; i++){printf("姓名:%s\n", p[i].name);printf("性别:%c\n", p[i].sex);printf("年龄:%d\n", p[i].age);printf("成绩:%d\n", p[i].score);printf("========================\n");}return 0;
}int main(void)
{struct student s[3];InPutAllStInof(s, 3);PutAllStInof(s, 3);return 0;
}

1.2.共同体(联合体)

        1.格式 

union s{char a;int b;};

        2.存储

                联合体的成员变量共同使用一个空间(空间大小为最大的那个类型对应的) 

         3.测试一个平台是大端还是小端

                小端:低地址存储低位数据

                大端:低地址存储高位数据

                我是用的ubuntu是小端

#include <stdio.h>union s
{char a;int b;
};int main(void)
{union s s1;s1.b=1;if(s1.a){printf("小端!\n");}else{printf("大端!\n");}return 0;
}

1.3.枚举 

        1.格式

enum s
{变量名1,变量名1,变量名1,变量名1,....
};

        2.特点

                未初始化,第一个成员变量的默认值为0,剩余的依次+1;

                初始化第一个成员变量,后面的也是依次+1;

                枚举类型对应的变量的值应该为枚举常量中的值之一;

                枚举常量可以让代码提高可读性

二、位运算(操作二进制)

        2.1.&

                遇0置0

        2.2.|

                遇1置1

        2.3.^

                相同为0  相异为1

a(任意数)a ^ 0 = a;a ^ a = 0;

                 可用来交换数据

int a = 100;
int b = 500;a = a ^ b;
b = a ^ b;
a = a ^ b;

                结果 

                a = 500;

                 b = 100; 

        2.4.~(取反)

        2.5.<<

                扩大数据   num *= 2^n 

        2.6.>>

                缩小数据  num /= 2^n

        2.7.运算符优先级

                 括号 > 单目 > 双目 > 三目 > 赋值 > 逗号 

                双目:算数 > 移位 > 关系 > 位运算 > 逻辑 

三、总结

        今天是2024年7月26日,学习的第14天。今天完完全全学习了构造类型的定义和使用场景,以及位运算符的使用。大概还有一天时间C语言就结束啦!

        加油! 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/50624.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

培训第十六天(web服务apache与nginx)

上午 静态资源 根据开发者保存在项目资源目录中的路径访问静态资源html 图片 js css 音乐 视频 f12&#xff0c;开发者工具&#xff0c;网络 1、web基本概念 web服务器&#xff08;web server&#xff09;&#xff1a;也称HTTP服务器&#xff08;HTTP server&#xff09;&am…

android移动开发基础期末看这一篇就ok了

android编程题 界面布局 使用TableLayout布局实现一个简单的计算器界面。 常见控件 开发一个整数加法的程序&#xff0c;实现将计算结果显示到界面上的功能。 开发一个自定义对话框&#xff0c;其界面中显示标题、提示内容、确定和取消按钮。当点击回退健时&#xff0c;用于…

如何获取文件缩略图(C#和C++实现)

在C中&#xff0c;可以有以下两种办法 使用COM接口IThumbnailCache 文档链接&#xff1a;IThumbnailCache (thumbcache.h) - Win32 apps | Microsoft Learn 示例代码如下&#xff1a; VOID GetFileThumbnail(PCWSTR path) {HRESULT hr CoInitialize(nullptr);IShellItem* i…

翻译: 可视化深度学习神经网络一

这是一个随意书写的28*28像素、分辨率很低的数字 3 但你的大脑一看见就能轻松辨识出来 &#xff0c;我想要你好好欣赏这点 人脑能够毫无障碍地辨识是非常厉害的 我的意思是&#xff0c;这个、这个、还有这个&#xff0c;都能被识别为 3 即使前后图像的图形组成有很大差异 当你…

懂个锤子Vue 项目工程化扩展:

Vue项目工程化扩展&#x1f4f6;&#xff1a; 前言&#xff1a;当然既然学习框架的了&#xff0c;HTMLCSSJS三件套必须的就不说了&#xff1a; JavaScript 快速入门 紧跟前文&#xff0c;目标学习Vue2.0——3.0&#xff1a; 懂个锤子Vue、WebPack5.0、WebPack高级进阶 涉及的…

SpringBoot 禁用RabbitMQ自启动

1.背景 在实际开发中,项目中使用了mq,但是在测试的时候用不到mq,或者测试环境的mq挂了, 希望能正常启动项目 2.步骤 这很简单在配置文件中增加一个配置就可以了 spring:autoconfigure:exclude: org.springframework.boot.autoconfigure.amqp.RabbitAutoConfiguration 表示启…

WEB前端开发中如何实现大文件上传?

大文件上传是个非常普遍的场景&#xff0c;在面试中也会经常被问到&#xff0c;大文件上传的实现思路和流程。在日常开发中&#xff0c;无论是云存储、视频分享平台还是企业级应用&#xff0c;大文件上传都是用户与服务器之间交互的重要环节。随着现代网络应用的日益复杂化&…

康师傅JAVA核心内容

链接&#xff1a;康师傅JAVA核心内容 (qq.com)

黑龙江等保测评如何做到既全面又高效?

在黑龙江省进行等保测评&#xff0c;必须在全面和高效之间寻求一个平衡点&#xff0c;以保证网络的安全性和可靠性。黑龙江等保测评怎样才能在二者之间发现黄金交汇点&#xff1f;下面&#xff0c;我们来揭开谜底。 精准定位&#xff0c;明确测评范围 首先&#xff0c;一个综…

Docker与LXC差异以及相关命令

容器&#xff1a;Docker与LXC差异以及相关命令 ​ LXC与Docker对比&#xff0c;LXC只实现了进程沙盒化&#xff0c;不支持在不同的机器上进行移植&#xff1b;Docker将应用的所有配置和环境进行了抽象&#xff0c;打包到一个容器中&#xff0c;此容器可以在任何安装了docker的…

Java-Swing开发-003布局

文章目录 布局管理器常用布局BorderLayoutFlowLayoutGridLayoutGridBagLayout 布局管理器 Swing里负责布局的玩意&#xff0c;方便调整组件位置&#xff0c;一般是container里设置 1.JFrame默认布局为BorderLayout 2.JPanle默认布局为FlowLayout 常用布局 BorderLayout 东…

【DEVOPS】gitChecker快速使用指南

0. 目录 1. 前言2. gitChecker简介3. 快速应用4. 相关 1. 前言 时过境迁&#xff0c;原本以为不需要文档说明的操作&#xff0c;四年后的现在因为GitLab服务器的掉电损坏&#xff0c;被迫面对从零开始的一切&#xff0c;才发现实际执行时的一步一个坑。 痛定思痛之下&#xf…

jQuery常用选择器(入门级)代码演示

1.基本选择器&#xff1a; // 选择id为"myElement"的元素 $("#myElement");// 选择class为"myClass"的所有元素 $(".myClass");// 选择所有<p>标签 $("p");2.属性选择器&#xff1a; // 选择带有name属性的input元素…

vscode搭建rust开发环境

由于rustrover不是免费的&#xff0c;此处教学搭建一套基于vscode的rust开发环境&#xff0c;可运行&#xff0c;可调式 1.下载vscode1.91.1 Download Visual Studio Code - Mac, Linux, Windows 2.下载插件 打开网站下载插件 rust-analyzer-0.4.2049、vscode-lldb-1.10.0、…

c#中的正则表达式和日期的使用(超全)

在 C# 中&#xff0c;正则表达式&#xff08;Regular Expressions&#xff09;是一种强大的文本处理工具&#xff0c;用于执行各种字符串搜索、替换和验证任务。以下是一些常用的正则表达式示例及其用途&#xff1a; 1. 邮箱地址验证 ​ string emailPattern "^[^\s][^…

redis 缓存中间件 (缓存数据库)

redis的简介 nginx web服务器 php 转发动态请求 tomcat web页面 &#xff0c;也可以转发动态请求 springboot 自带tomcat 所有的数据库都不支持高并发&#xff0c;一旦访问量激增&#xff0c;数据库很快就会崩溃。 redis 也是一个数据库&#xff0c;不单单是一个缓存工具…

docker 配置安装宝塔面板

宝塔镜像 https://hub.docker.com/r/btpanel/baota 配置宝塔 第一步&#xff1a;创建一个名为 bt-data 的目录&#xff0c;此目录将存储宝塔数据。 $ mkdir bt-data $ chmod -R 755 bt-data 第二步&#xff1a;在 bt-data 目录中创建一个名为 docker-compose.yml 的文件&#x…

IDEA项目的依赖(pom.xml文件)导入问题及解决

前言&#xff1a;该文章为转载&#xff0c;没有仔细的看 IDEA新建项目和pom.xml文件被修改时&#xff0c;右下角都会出现 Maven projects need to be imported&#xff08;项目需要导入依赖&#xff09; 如下&#xff0c;点击 Import Changes导入后&#xff0c;有时会一直处于…

数据库-存储过程

1、概念 存储过程&#xff08;Stored Procedure&#xff09;是在大型数据库系统中&#xff0c;一组为了完成特定功能的SQL 语句集&#xff0c;存储在数据库中&#xff0c;经过第一次编译后&#xff0c;再次调用不需要重复编译&#xff0c;用户通过指定存储过程的名字并给出参数…

【Android面试八股文】荣耀面试算法题:输出所有的水仙花数

文章目录 一、水仙花数的定义二、算法实现 一、水仙花数的定义 要输出所有的水仙花数&#xff0c;我们需要先了解什么是水仙花数。 水仙花数&#xff08;Narcissistic number&#xff09;&#xff0c;也称为自恋数、自幂数、阿姆斯特朗数&#xff0c;是指一个 n 位的正整数&a…