期末复习 C语言再学习

news/2024/5/3 21:52:10/文章来源:https://blog.csdn.net/meihaoshy/article/details/128039698

作者:@小萌新
专栏:@C语言复习
作者简介:大二学生 希望能和大家一起进步
博客简介:本篇博客会介绍一些操作符关键字指针以及结构体
在这里插入图片描述

操作符关键字和结构体

  • 操作符
    • 左右移操作符
    • 条件操作符
  • 关键字
  • 指针
  • 结构体
  • 总结

操作符

本文就不像之前写的博客一样详细介绍每个操作符了

这里会挑选几个重要的操作符出来讲解并且讲解为什么它们重要以及我目前所知道的它们的用法

左右移操作符

我们这里写出下面的代码

	int a = 1;int b = a << 5;

那么这个时候的b是等于多少呢?

可能有些同学这个时候就开始动笔写写画画了是吧

其实很简单 一眼就能看出来b的结果是32

在这里插入图片描述
为什么呢?

因为我们这里这里使用的左移操作符 它的含义实际上就是将一个数字扩大2的n次方倍(n为操作符右边的数字)

这样一来我们就很明确了

这几行的代码的意思就是b等于a乘2的五次方

那么接下来的问题相信大家也能很好的解决了

	int a = 1;int b = a << 5;b = b >> 2;

这里实际上就是将b缩小2的2次方倍 也就是32除以4 最后的结果当然是8啦

到最后我们总结下

左移操作符实际上就是将操作数扩大2的k次方倍
右移操作符实际上就是将操作数缩小2的k次方倍

条件操作符

语法格式如下

Exp1?Exp2:Exp3

之所以说这个操作符重要是因为如果能够或用的话 它能够大大缩短我们的代码行数

就像我昨天写的一道使用滑动窗口解决最小长度子数组的问题

在这里插入图片描述
最后一行的代码如下

return ans == INT32_MAX ? 0 : ans;

我这里就使用了一个条件表达式来解决 如果这里不使用条件表达式的话就要使用if else来判断了

代码会很长

关键字

这一块没有什么好说的 虽说我们之间讲了register关键字 但是从我敲代码这两个月以来几乎没有碰到过

也可能是学的程度不够深 这两个月学习以来总结最重要的一个关键字就是typedef

不管是做项目还是手撕数据结构的时候 使用typedef重新定义一个清晰的变量都可以对我们有很大的帮助

比如果再链表中 我们通常会写下类似下面的代码

typedef int Valtype;

这段代码的意思是给int取了个别名叫做Valtype

这样子做有两个好处

  1. 如果我们不想存储int类型的数据了 我们只需要将typedef的int变成char就行
  2. 大大增加代码的可读性 一看到Valtype我们就知道这个是存储数据的类型了

指针

越学到后面越觉得指针就是地址这句话概括的很精辟

通过这个地址(指针)我们可以访问到里面的内容 并可以做出增删查改的操作

当然因为在32 64位系统下地址大小的不同 我们指针的大小也不尽相同

在32位系统上为4个字节(32bit)

在64位系统上为8个字节(64bit)

结构体

在学习了C++中的class关键字之后再来看c语言中struct定义结构体

我们是不是就可以将struct定义的结构体理解成一个全部public的类啊 里面只有成员对象没有成员函数

我们可以随意访问里面的内容来修改数据

总结

在这里插入图片描述

复习了之前写的博客 写了一些自己新的理解
由于博主水平有限 错误在所难免 希望大佬们看到可以及时指正
如果本文帮助到了你 别忘记一键三连啊
阿尼亚 哇库哇库

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

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

相关文章

Java多线程(一)——多线程的创建

多线程 在计算机中为了提高内存和资源的利用率&#xff0c;引入了并发编程的思想&#xff1b;多进程和多线程都能实现并发编程&#xff0c;但是多线程相对于多进程更“轻量”&#xff0c;&#xff08;多线程和多线程的关系和区别&#xff09;&#xff0c;所以这篇博客将着重讲…

Python程序员:代码写的好,丝滑的壁纸少不了

前言 嗨喽&#xff0c;大家好呀~这里是爱看美女的茜茜呐 又到了学Python时刻~ 不知道大家的电脑桌面一般用的什么类型的壁纸&#xff1f; 早上来上班&#xff0c;打开电脑&#xff0c;被漂亮的桌面壁纸所吸引&#xff0c;年底将近&#xff0c;这又是哪个地方的节日&#xff…

【目标检测】英雄联盟能用YOLOv5实时目标检测了 支持onnx推理

目录 一、项目介绍 二、项目结构 三、准备数据 1.数据标注 2.数据转换格式 四、执行训练 1.anchors文件 2.标签文件 3.预训练模型 4.训练数据 5.修改配置 6.执行训练 五、执行预测 1.检测图片 2.检测视频 3.heatmap 五、转换onnx 1.导出onnx文件 2.检测图片…

SpringCloud之入门

目录 一、简介 微服务架构介绍 微服务架构的常见问题 二、微服务架构拆分代码实现 微服务环境搭建 案列准备 微服务调用 实现步骤 创建一个父工程 创建成功spcloud-shop的pom依赖 创建基础模块 基础模块 shop-common pom依赖 创建用户微服务 shop-user 源码 shop-use…

热门编程语言那么多,该选择哪个

编程语言那么多&#xff0c;该怎么选呢&#xff1f;无论是对找工作、还是打算转行新领域的同学们&#xff0c;起初都会有这样的困扰。这时候了解清楚编程语言的种类&#xff0c;到底该选哪个方向&#xff1f;将来能从事哪些岗位的工作&#xff1f;就比较重要了。与其盲目随从他…

【FLASH存储器系列十二】Nand Flash芯片使用指导之二

目录 1.1 芯片指令集 1.2 READ PAGE&#xff08;00h–30h&#xff09; 1.3 READ PAGE CACHE SEQUENTIAL (31h) 1.4 READ PAGE CACHE RANDOM (00h-31h) 1.5 PROGRAM PAGE&#xff08;80h-10h&#xff09; 1.6 PROGRAM PAGE CACHE (80h-15h) 1.7 ERASE BLOCK (60h-D0h) 上…

Git版本控制工具使用

文章目录1. CICD系统构成和流程1.1 CICD来源及概念1.2 Git版本控制系统2. Git操作和使用git config (基本配置操作)git clone <repo URL\> (创建仓库|拷贝已有仓库)git branch (分支相关操作- 创建|查看|删除)git checkout (操作文件和分支)git add/commit (提交和修改-保…

估值破千亿,被资本疯抢的广汽埃安会是广汽的未来吗?

最近&#xff0c;广汽埃安在新能源市场上捷报频传&#xff0c;先是宣布完成了182.94亿元的A轮融资&#xff0c;成近年国内新能源整车最大的单笔私募融资。品牌估值更是达到了震撼人心的1032.39亿&#xff0c;基本等于广汽集团AH总市值&#xff0c;也远超港股小鹏、零跑汽车的市…

【C++】Cmake使用教程(看这一篇就够了)

文章目录引言一 环境搭建二 简单入门2.1 项目结构2.2 示例源码2.3 运行查看三 编译多个源文件3.1 在同一个目录下有多个源文件3.1.1 简单版本3.1.1.1 项目结构3.1.1.2 示例代码3.1.1.3 运行查看3.1.2 进阶版本3.1.2.1 项目结构3.1.2.2 示例源码3.1.2.3 运行查看3.2 在不同目录下…

[附源码]java毕业设计游戏战队考核系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

vue拖拽删除实现

拖拽删除 背景 自营上传图片&#xff0c;但是需要排序和删除功能&#xff0c;所以用到了h5的拖拽 源元素&#xff1a; 即被拖拽的元素。 目标元素&#xff1a; 即合法的可释放元素。 每个事件的事件主体都是两者之一。 拖拽事件 触发顺序及次数 被拖拽元素&#xff0c;事…

数据结构学习笔记(Ⅳ):串

目录 1 串 1.1 定义与基本操作 1.定义 2.基本操作 1.2 串的存储结构 1.顺序存储 2.链式存储 3.基于顺序存储实现基本操作 2 串的朴素模式匹配算法 2.1 朴素模式匹配算法 2.2 KMP算法 1.优化思路 2.计算next数组 2.3 KMP算法优化 1 串 1.1 定义与基本操作 1.定义…

机器学习笔记之高斯网络(二)高斯贝叶斯网络

机器学习笔记之高斯网络——高斯贝叶斯网络引言回顾高斯网络贝叶斯网络&#xff1a;因子分解高斯贝叶斯网络&#xff1a;因子分解引言 上一节介绍了高斯网络及其条件独立性&#xff0c;本节将介绍高斯贝叶斯网络。 回顾 高斯网络 高斯网络最核心的特点是&#xff1a;随机变…

【软件测试】作为测试人,因工作与开发吵了一架碰撞,该咋办......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 测试与开发在工作中…

Redis数据库redisDb源码分析

写在前面 以下内容是基于Redis 6.2.6 版本整理总结 一、组织方式 Redis服务器将所有的数据库 都保存在src/server.h/redisServer结构中的db数组中。db数组的每个entry都是src/server.h/redisDb结构&#xff0c;每个redisDb结构代表一个数据库。Redis默认有16个数据库。 1.1…

Android App开发音量调节中实现拖动条和滑动条和音频管理器AudioManager讲解及实战(超详细 附源码和演示视频)

需要源码请点赞关注收藏后评论区留下QQ~~~ 一、拖动条和滑动条 拖动条SeekBar继承自进度条ProgressBar&#xff0c;它与进度条的不同之处在于&#xff0c;进度条只能在代码中修改进度值&#xff0c;不能由用户改变进度值&#xff0c;拖动条不仅可以在代码中修改进度值&#xf…

Greenplum数据库故障排查及修复

场景一&#xff1a;gp服务正常&#xff0c;存在部分segment实例丢失 1、异常现象 主节点切换gpadmin用户输入gpstate查看状态 如果红色框内有指向左边的箭头则说明存在部分segment实例丢失。 2、排查思路 首先查看主节点日志&#xff0c;重点关注发生segment丢失那段时间的…

Kafka开发环境搭建

kafka开发环境搭建一、安装Java环境1.1、下载Linux下的安装包1.2、解压缩安装包1.3、解压后的文件移到/usr/lib目录下1.4、配置java环境变量二、 Kafka的安装部署2.1、下载安装Kafka2.2、配置和启动zookeeper2.3、启动和停止Kafka后言一、安装Java环境 1.1、下载Linux下的安装…

【web前端开发】HTML知识点超详细总结

文章目录什么是网页常用的浏览器及内核VScode和WebStrom使用HTML常用标签文档类型<!DOCTYPE>网页语言lang字符集title标签标题标签段落和换行标签文本格式化标签div和span标签图像标签路径相对路径同一级路径上一级路径:下一级路径绝对路径链接标签超链接标签外部链接:内…

(DS90UB3702TRURRQ1) LT8640SHV-2低噪声降压稳压器QFN

LT8640/LT8640-1降压稳压器采用Silent Switcher架构&#xff0c;设计用于最大限度地降低EMI/EMC辐射并在高达3MHz的频率下提供高效率。由于具有2.5μA的超低静态电流&#xff08;当输出处于全面调节状态时&#xff09;&#xff0c;因此适用于要求在非常小负载电流条件下获得极高…