C语言
文章平均质量分 90
阿基米东
本科毕业于国内某知名双非理工大学,当过校队球员,后自学编程,专注于嵌入式软件开发十余年,在物联网、机器人、汽车等领域拥有实战经验,也是多个开源项目的贡献者,对 Web 前后端、AI 技术略知一二。立志成为一名杰出的开源创客,让世界因我而变得更美好!
展开
-
C 语言编码规范(MISRA-C-:2004)
众所周知,在制造业(尤其是汽车制造业)非常注重代码安全。MISRA-C 就是一个汽车制造业嵌入式 C 编码标准,最早由汽车工业软件可靠性联合会(Motor Industry Software Reliability Association,简称 MISRA)于 1998 年发布。2004 年发布了第二版的 MISRA C,即《MISRA-C-:2004 Guidelines for the use of the C language in critical systems》,是目前工业界常用的 C 语言编码原创 2022-05-24 11:49:23 · 8538 阅读 · 2 评论 -
C语言标准——C89、C99、C11、C17、C2x ...
C的标准化过程C语言自诞生到现在,期间经历了多次标准化过程,主要分成以下几个阶段:Traditional C此时的 C 语言还没有标准化,来自“C Programming Language, First Edition, by Brian W. Kernighan, Dennis M. Ritchie. Prentice Hall PTR 1978”的 C 描述可算作“正式”的标准,所以此时的 C 也称为“K&R” C。期间 C 语言一直不断的发生细微的变化,各编译器厂商也有自己的扩展,这.原创 2021-04-09 00:55:28 · 19039 阅读 · 6 评论 -
标准 sscanf 解析语法与数据解析
概述在C语言应用开发过程中,常常需要对字符串数据进行解析,这些字符串可能是从文件、键盘或者其他设备读入。比如与 AT 设备通信时,需要对 AT 设备发送过来的数据进行解析,从而获得我们想要的一些数据。然而,处理字符串却是一件很麻烦的事!幸运的是,我们有 sscanf() 函数。sscanf 可以认为是标准 C 库自带的 split string (字符串分割)函数,它强大的功能体现在对 format 的支持上。sscanf 函数说明在 stdio.h 中,提供了三个类似的函数,函数原型如下:int原创 2020-08-16 15:42:11 · 2076 阅读 · 0 评论 -
二叉树的遍历
对于一种数据结构而言,遍历是常见操作。二叉树是一种基本的数据结构,是一种每个节点的儿子数目都不多于2的树。二叉树的节点声明如下:typedef struct TreeNode *PtrToNode;typedef struct TreeNode *BinTree;struct TreeNode{ int Data; //为简单起见,假设树节点的元素为int型 ...原创 2019-05-19 12:54:04 · 499 阅读 · 0 评论 -
不使用中间变量实现字符串反转
昨天做了一道面试题,题目大概是这样的:现在有字符串“I love China”,需要对该字符串中的单词进行逆序,但是不允许使用第三方变量来保存数据,可以使用辅助指针。 思路是比较清晰的,但在纸上手写代码还有感觉有点别扭,编译不了啊。。。所以今天有空就画个流程图,再码一下代码,编译调试一下吧。 思路是这样的:利用两个指针 *head 和 *tail 分别指向字符串的头和尾(不是 ‘\0’)原创 2017-10-15 14:03:19 · 1885 阅读 · 0 评论 -
广工课程设计——学生成绩统计系统
【前言:如题,本文中涉及的项目是去年应学妹要求帮忙写的,纯C语言,在Turbo C下编译通过。最近整理资料,觉得该项目中涉及到的结构体、链表、文件操作、断言等基础知识,以及这个小项目的函数设计和变量命名等容易忽略的知识对初学C语言的朋友应该会有帮助,所以决定发布出来。同时,给需要完成类似课程设计的学生一个参考,但是应注意理解其中的知识点,而不应复制粘贴草草了事。】问题描述: 学期考试结束,统计原创 2016-01-15 00:10:24 · 3754 阅读 · 3 评论 -
字节对齐(Data Alignment)
什么是字节对齐?字节按照一定规则在空间上排列就是字节对齐。现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定类型变量的时候经常在特 定的内存地址访问,这就需要各种类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个的排放,这就是对齐。为什么需要字节对齐?Windows 和 Linux 的字节对齐规则32位和64位系统原创 2016-12-18 11:41:56 · 2807 阅读 · 0 评论 -
大小端模式 & 字节序
大、小端模式的说法,来自乔纳森·斯威夫特的小说《格列夫游记》,在小人国内部分裂成 Big-endian 和 Little-endian 两派,他们的争论在于一派要求从鸡蛋的大头把鸡蛋打破,另一派要求从鸡蛋的小头把鸡蛋打破。斯威夫特借以讽刺英国的政党之争,而计算机工业则借此表示数据储存顺序的分歧。 大端模式,是指数据的高字节保存在内存的低地址中,而数据的低字节保存在内存的高地址中,这样的存储模式原创 2016-12-14 20:17:25 · 2987 阅读 · 0 评论 -
轻松无痛苦学习CRC指南
原文地址:http://www.repairfaq.org/filipg/LINK/F_crc_v31.html1. Preface 前言1.1) About the Author & Copyright 关于版权和作者“Everything you wanted to know about CRC algorithms, but were afraid to ask for fear that e翻译 2016-06-02 18:30:05 · 3448 阅读 · 0 评论 -
关于BSS段和Data段
BSS(Block Started by Symbol)这个词最初是UA-SAP汇编器(United Aircraft Symbolic AssemblyProgram)中的一个伪指令,用于为符号预留一块内存空间。该汇编器由美国联合航空公司于20世纪50年代中期为IBM 704大型机所开发。后来BSS这个词被作为关键字引入到了IBM 709和7090/94机型上的标准汇编器FA转载 2014-01-18 00:37:31 · 3470 阅读 · 1 评论 -
定义 & 声明
近来思绪比较凌乱,于是想写点什么来寄托空虚寂寞之情怀,支撑自己孤苦无助的人生。但是又不想写鸡汤,那么,我们来聊聊“声明”和“定义”吧。 先来提个问题:为什么每次圣斗士出招之前都要大喊一下招式?嗯,没错!因为函数要先声明,然后才能调用。举个栗子:我们定义了一个这样子的函数 -->int function (int原创 2015-02-06 23:40:26 · 1446 阅读 · 0 评论 -
C语言跟内存分配方式
C语言跟内存分配方式C语言跟内存分配方式 (1) 从静态存储区域分配。内存在程序编译的时候就已经分配好,这块内存在程序的整个运行期间都存在。例如全局变量,static变量。 (2) 在栈上创建。在执行函数时,函数内局部变量的存储单元都可以在栈上创建,函数执行结束时这些存储单元自动被释放。栈内存分配运算内置于处理器的指令集中,效率很高,但是分配的内存容量有限。 (3)从转载 2013-12-14 22:03:32 · 1074 阅读 · 0 评论 -
未定义行为
先看第一个小程序int main(void){ int i = 0; int a[] = {10, 20, 30}; int b = 1*a[i++] + 2*a[i++] + 3*a[i++]; printf(“b = %d\n”, b); return 0;} 请思考:上述程序原创 2013-12-12 20:09:25 · 1312 阅读 · 0 评论