嵌入式学习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…

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

这是一个随意书写的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高级进阶 涉及的…

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的…

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、…

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

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

NAS、SAN 与 DAS 的比较与应用场景

文章目录 1. NAS&#xff08;网络附加存储&#xff09;定义特点实现成本&#xff1a;适用场景 2. SAN&#xff08;存储区域网络&#xff09;定义特点实现成本&#xff1a;适用场景 3. DAS&#xff08;直接附加存储&#xff09;定义特点实现成本&#xff1a;适用场景 区别总结结…

Redis学习[1] ——基本概念和数据类型

Redis学习[1] ——基本概念和数据类型 一、Redis基础概念 1.1 Redis是什么&#xff0c;有什么特点&#xff1f; Redis是一个基于**内存的数据库&#xff0c;因此读写速度非常快**&#xff0c;常用作缓存、消息队列、分布式锁和键值存储数据库。支持多种数据结构&#xff1a;…

Java 内推 | 教育行业缺口来了,研发,运维,产品,教研,职能,营销... 别错过

Java 内推 | 教育行业缺口来了&#xff0c;研发&#xff0c;运维&#xff0c;产品&#xff0c;教研,职能&#xff0c;营销… 别错过 岗位职责&#xff1a; 1、根据公司战略及业务规划&#xff0c;参与部门业务架构分析与设计&#xff0c;包含规划立足当前、面向未来的应用架构…

源码编译安装,及nginx服务控制、监控块

1.源码编译安装&#xff1a; [root17dns ~]# wget https://nginx.org/download/nginx-1.27.0.tar.gz 2.解压&#xff1a; [root17dns ~]# tar -zxvf nginx-1.27.0.tar.gz 3.安装gcc等工具 [root17dns ~]# yum -y install gcc gcc-c [root17dns ~]# yum -y install make lrzsz …

postman给全部接口添加请求头数据(如token)

如果给没有一个接口添加请求头token就太慢了&#xff0c;如下图。可以点击所有接口的所属的目录。点击“Scripts”&#xff0c;点击Pre-request按钮。加入代码&#xff1a; pm.request.addHeader("Authorization:eyJhbGciOiJIUzI1NiIsInR5cCI111pXVCJ9.eyJjbGFpbXMiOnsiaW…

小红书笔记评论采集全攻略:三种高效方法教你批量导出

摘要&#xff1a; 本文将深入探讨如何利用Python高效采集小红书平台上的笔记评论&#xff0c;通过三种实战策略&#xff0c;手把手教你实现批量数据导出。无论是市场分析、竞品监测还是用户反馈收集&#xff0c;这些技巧都将为你解锁新效率。 一、引言&#xff1a;小红书数据…

项目实战_表白墙(简易版)

你能学到什么 一个比较简单的项目&#xff1a;表白墙&#xff08;简易版&#xff09;&#xff0c;浏览器&#xff1a;谷歌升级版将在下个博客发布 效果如下 正文 说明 我们是从0开始一步一步做这个项目的&#xff0c;里面的各种问题&#xff0c;我也会以第一人称视角来解…

yolov10在地平线旭日X3派上的部署和测试(Python版本和C++版本)

0、搭建开发环境 当前的测试根据一下的步骤并修改源码是可以实现yolov8的板端运行&#xff0c;如果不想再搭建环境和测试代码bug上浪费更多的时间可以直接获取本人的测试虚拟机&#xff0c;所有的测试代码、虚拟环境和板端测试工程以全部打包到了虚拟机&#xff0c;需要的可以…

OpenBayes 教程上新 | 文生图、图生图、图像修复三合一神器, HiDiffusion 一键启动教程现已上线!

扩散模型已成为高分辨率图像合成的主流方法&#xff0c;传统的扩散模型虽然在图像合成方面取得了显著进展&#xff0c;但在扩展到更高分辨率时往往面临对象重复和计算成本增加的问题。 旷世科技开源的高分辨率框架 HiDiffusion&#xff0c;由分辨率感知 U-Net (RAU-Net) 和改进…

求最大公约数与最小公倍数(C语言 简洁快速版)

求最大公约数 辗转相除法&#xff08;首选&#xff0c;因为简单快捷&#xff09; 思路&#xff1a; 1.将两整数求余 a%b c 2.如果c 0;则b为最大公约数 3.如果c ! 0,则 a b&#xff1b;b c&#xff1b;继续从1开始执行 4.也就是说该循环的是否继续的判断条件就是c是否为0 …