(第九十三篇)C规范编辑笔记(五)

news2025/7/19 6:23:00

往期文章:

C规范编辑笔记(一)
C规范编辑笔记(二)
C规范编辑笔记(三)
C规范编辑笔记(四)

正文:

继第四篇C规范编辑笔记之后,我们今天来分享第五篇C规范编辑笔记,讲解部分类型初始化时候的建议,话不多说,我们现在开始讲~

1、为了避免未定义的行为,只有本身被限定为volatile的指针才能访问volatile变量。

2、 规则 - 在声明变量时不接受类型省略,为了避免溢出出错,不建议声明隐式声明~

3、对于枚举的建议:
1、不要在枚举中混合显式和隐式常量。
2、不要使用匿名枚举
如下举例:

Bad example:

enum une_enum {
enum1=1,
enum2 ,
enum3 ,
enum4=3 /* 这样会造成enum4和enum3具有相同的值*/
};

Good example:    //推荐这样编写
enum une_enum {
ENUM1=0,
ENUM2=1,
ENUM3=2,
ENUM4=3
};

4、建议——变量应在声明时或声明后立即初始化,举例:

Bad example:
int tab[10] = { 0, [4] = 3, 5, 6, [1] = 1, 2 };
struct type_t o = { .a = 10, 0, "bob" };

Good example:
int tab[10] = { 0, 1, 2, 3, 5, 6, 0, 0, 0, 0 };
struct type_t o = { 10, 0, "bob" };
struct type_t p = { .a = 10, .b = 0, .c ="bob" };

这里推荐一下我们可能经常使用到的初始化数组和结构体的用法:

int tab[N] = {0};  
une_structure st = {0};  //此初始化确保结构化变量的所有元素/字段都初始化为零。

!!!但是这里有一个用法需要注意,对于上述的int tab[N] = {0}我们可以直接代入一个0来将全部初始化为0,但是如果你用1代入,就不是全部为1哦!!!

需要注意一点的是,不是将全部变为那个唯一的数,如:
int tab[N] = {1};  ==》并不意味着所有元素都是 1,而是所有元素都为零且只有第一个元素为 1

这是因为,在结构化变量初始化不完整的情况下(即,如果不是所有字段/元素都被显式初始化),则未列出的字段/元素默认初始化为 0。请注意,此初始化不会扩展到填充空间,所以我们用1不会将全部元素初始化为1,而是只将第一个元素置为1.

好了,今天我们就先分享到这里~
我们C规范编辑笔记第六篇见~

在这里插入图片描述

本人水平有限,上述信息仅供学习参考,如有错误和不妥之处,请多多指教。
另外创作不易,请勿抄袭,如果有帮助到大家的话希望大家可以点个赞,谢谢~

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

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

相关文章

wodP2P ActiveX 最新版 Crack

wodP2P ActiveX 组件 网络P2P ActiveX 客户端 OCX/DLL,V-P-N 组件,P2P 组件,P2P 库 wodP2P 是 P2P 点对点 ActiveX 组件,用于在两个对等点之间建立虚拟专用网络。所有 P2P 通信都经过加密和保护。对等点能够转发本地和远程端口、发…

Ubuntu 20.04系统中Sage(sagemath)安装及使用详细过程

文章目录一、安装方式一:预编译二进制版本二、安装方式二:源码编译最近在做实验遇到要安装Sage,也是花了将近三天时间才弄好,一波三折整理了一下,以便后续还要安装时能少走弯路。首先,了解一下sage是什么。…

fiddler抓包

首先安装fiddler官网地址 安装完毕之后,这时fiddler软件是抓取不了https的请求数据包的 fiddler 抓取https请求数据包 打开fiddler 一次点击 工具 -> 选项 -> HTTPS 勾选上面选中 的选项 依次进行以下步骤即可 解压fiddler包, 安装fidder 打开…

Servlet到底是什么(非常透彻)

Servlet到底是什么?1. Servlet的概念2. Servlet是一种规范3. Servlet的接口4. JSP是什么学习顺序1. Servlet的概念 Servlet 是 Server Applet 的缩写,译为“服务器端小程序”,是一种使用 Java 语言来开发动态网站的技术。 Servlet 虽然被称…

deepvariant 基因变异识别算法docker版使用

参考:https://github.com/google/deepvariant docker版安装 参考:https://github.com/google/deepvariant/blob/r1.4/docs/deepvariant-quick-start.md 本文是windows上安装的deepvariant 1.4.0版本 docker pull google/deepvariant:1.4.0docker版使用…

用SPDK实现存储加速

个人理解nvme能提高存储性能,就像4G比3G快一样,电磁波还是光速,但协议变了,所以快了。rdma应用跑在用户态能减小存储时延,spdk在用户态实现nvme驱动,天然能和rdma结合,而且两者的队列能一一映射…

python内存泄漏浅析

一、概述 以前没有对内存泄漏有过相关的排查手段,一般个人使用python写的程序,不是那种长时间运行的程序,很少会去注意内存是否出现泄漏,但是如果程序是作为服务器的服务,需要长时间运行的,即使是很小的内…

毕业设计-基于机器视觉的口罩佩戴检测识别

目录 前言 课题背景和意义 实现技术思路 数据来源 COCO数据集预训练模型 图片检测 视频检测 训练&评估结果 实现效果图样例 前言 📅大四是整个大学期间最忙碌的时光,一边要忙着备考或实习为毕业后面临的就业升学做准备,一边要为毕业设计耗费大量精力。近…

结冰过程渲染-Ovito实现

结冰过程渲染-Ovito实现结冰过程渲染后结果一、渲染步骤-主要突出内容二、识别并区分冰晶和溶液三、渲染溶液中的水四、渲染出溶液中的冰五、突出溶液中溶质、金属板的显示六、data测试文件下载结冰过程渲染后结果 一、渲染步骤-主要突出内容 这里我们主要研究掺杂溶质如何影响…

k8s网络插件之Flannel

Flannel简介 Flannel官网:https://github.com/coreos/flannel Flannel是由CoreOS开源的针对k8s的网络服务,其目的是为解决k8s集群中各主机上Pod之间的通信问题,其借助etcd维护网络IP地址分配,并为每个Node节点分配一个不同的IP地…

学生HTML个人网页作业作品 HTML+CSS校园环保(大学生环保网页设计与实现)

🎀 精彩专栏推荐👇🏻👇🏻👇🏻 ✍️ 作者简介: 一个热爱把逻辑思维转变为代码的技术博主 💂 作者主页: 【主页——🚀获取更多优质源码】 🎓 web前端期末大作业…

redis : 持久化

redis通过将数据放在内存里实现高速访问,为了防止意外情况,其数据也可以存放起来 持久化的实现方式有两种方案:一种是直接保存当前已经存储的数据,相当于复制内存中的数据到硬盘上,需要恢复数据时直接读取即可&#x…

代理模式与动态代理深入理解

一,代理模式的简单认识 1.参与者: 代理对象,被代理对象 代理对象相当于现实生活中的房产中介,被代理对象 相当于 房东 2.目的:保护被代理对象 避免外界直接修改被代理对象,破坏掉被代理对象原本的功能。…

KubeGems容器云平台体验

KubeGems容器云平台体验 KubeGems 是一款开源的企业级多租户容器云平台。围绕云原生社区,KubeGems 提供了多 Kubernetes 集群接入能力,并具备丰富的组件管理和资源成本分析功能,能够帮助企业快速的构建和打造一个本地化、功能强大且低成本的…

关于BigInteger和BigDecimal

BigInteger BigInteger类是用于解决整形类型(含基本数据类型及对应的包装类,)无法表示特别大的数字及运算的问题,即使是占用字节数最多的整形long,能表示的范围也是有限的.理论上,你可以使用BigInteger表示任意整数基于java8中BigInteger的构造方法. BigDecimal的构造方法2 …

Java代码审计基础——RMI原理和反序列化利用链

目录 (一)何为RMI (二)、 RMI的模式与交互过程 0x01 设计模式 0x02 交互过程 0x03 Stub和Skeleton (三)简单的 RMI Demo 1、Server 2、Registry 3、Client 补充——动态类加载机制 几个函数 (…

Java集合框架详解(四)——Map接口、HashMap类、LinkedHashMap类

一、Map接口 Map接口的特点: (1)映射键值对的形式(key和value); (2)Map集合中,key是不能重复的,value是可以重复的; (3)…

解决报错:fatal: Authentication failed for ‘https://github.com/*/*.git/‘

目录 问题 解决 步骤一、 步骤二、 步骤三、 ​步骤四、 ​步骤五、 步骤六、 问题 今天创建一个 github 新仓库,首次上传本地代码时,遇到了一个报错。但是,之前这样操作肯定是没有问题的,毕竟我可以保证用户名和密码都是…

复杂环境下多移动机器人路径规划研究附Matlab代码

✅作者简介:热爱科研的Matlab仿真开发者,修心和技术同步精进,matlab项目合作可私信。 🍎个人主页:Matlab科研工作室 🍊个人信条:格物致知。 更多Matlab仿真内容点击👇 智能优化算法 …

数据结构 | 顺序栈与链式队【栈与队列的交际舞】

数据结构之栈与队列🌳顺序栈🍃前言🔥栈的结构简介及概述🔥为什么要用顺序栈?🔥结构声明🍃接口算法实现🍞初始化栈🍞销毁栈🍞入栈🍞出栈&#x1f3…