
C编程
苍茫也初心
这个作者很懒,什么都没留下…
展开
-
结构体对齐实例
1.下面的结构体大小分别是多大(假设32位机器)?struct A {char a; //1char b; //1char c; //1};//进行整体对齐,最大类型为1<对齐系数4,按1整体对齐,所以1+1+1=3struct B {int a; //4char b; //1short c;//2};//进行整体对齐,最大类型为4=对齐系数4,所以按4整体对齐4 ...转载 2020-03-14 10:50:56 · 245 阅读 · 0 评论 -
左值与右值
C/C++语言中可以放在赋值符号左边的变量,左值表示存储在计算机内存的对象,左值相当于地址值。右值:当一个符号或者常量放在操作符右边的时候,计算机就读取他们的“右值”,也就是其代表的真实值,右值相当于数据值。左值右值基本信息C/C++语言中可以放在赋值符号左边的变量,即具有对应的可以由用户访问的存储单元,并且能够由用户去改变其值的量。左值表示存储在计算机内存的对象,而不是常量或计算的结果。或者说左值转载 2016-05-14 16:50:03 · 356 阅读 · 0 评论 -
const理解之二
在上一篇《const理解之一》中,开始是这么说的:const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable)。这样说,有些绝对,或者说不太全面,下面是百度来的。只读变量与常量 例:为什么下面的例子在使用一个const变量来初始化数组,ANSI C的编译器会报告一个错误呢? const int n = 5; int a[n]; 答案与原创 2016-05-14 16:44:40 · 309 阅读 · 0 评论 -
const理解之一
一直想清晰的搞明白const的用法,这几天有空认真看了下,下面这篇是我从网上找到的说的比较浅显易懂的文章,特地记录在这里。不过,里面也有些说法值得商榷。 const在C语言中算是一个比较新的描述符,我们称之为常量修饰符,意即其所修饰 的对象为常量(immutable)。我们来分情况看语转载 2016-05-14 16:01:51 · 398 阅读 · 0 评论 -
free( )的一个理解(《C Primer Plus》的一个错误)
在看《C Primer Plus(第五版)》的链表部分时,书上有个例子,敲下来,运行会有错误提示,我也觉得有点问题。又在网上查了下,确实有点问题,一个关于free()的有点隐蔽的问题。 代码如下:/* films2.c -- 使用结构链表*/#include "stdafx.h"#include <stdio.h> #include <stdlib.h>#include <string.h>原创 2016-05-11 14:02:48 · 517 阅读 · 0 评论 -
FreeModBus解析1
FreeModBus中关于回调函数和指针传递的一个解析原创 2016-03-09 19:24:08 · 1592 阅读 · 0 评论 -
项目总结1(头文件,switch,&&,位变量)
最近做了个小项目,按键+数码管显示+SPI通信,对于参数设置和通信颇多感触,这两个看似简单,做起来一点都不简单,要是做的可靠全面更是不简单,不管是工作量和对c的要求一点都不比控制的核心少和浅。现把做项目的过程中遇到的几个问题摘出来,做个总结,也方便以后看。1,永远不要把外部函数和变量的声明放到.c文件中,而是要: c源文件要包涵自己的头文件,目的就是让编译器检查定义和声明的一致性,如下a.原创 2016-03-31 14:02:40 · 1409 阅读 · 0 评论 -
不归零编码NRZ
不归零制编码是效率最高的编码 缺点是存在发送方和接收方的同步问题 单极性不归零码,无电压(也就是元电流)用来表示”0”,而恒定的正电压用来表示”1”。每一个码元时间的中间点是采样时间,判决门限为半幅度电平(即0.5)。也就是说接收信号的值在0.5与1.0之转载 2016-01-22 09:41:37 · 3814 阅读 · 0 评论 -
C源文件要包含自己的头文件
引言: 我们经常在c工程中发现,源文件中要包含自己的头文件。一直以来,都不知道为什么这样做。现在,我知道了。 以前的认知: 我认为,.c文件没有必要包含自己的.h文件。.h文件包含.c文件中定义的函数和全局变量的声明,.h文件就是.c文件提供的对外接口文件。既然.h文件就是.c文件提供的对外接口文件,那么.c文件就没必要包含自己的.h文件了(.h文件是对外提供用的,对内又何必再包含转载 2015-02-10 10:47:44 · 687 阅读 · 2 评论 -
回调函数的一个理解
调用(calling)机制从汇编时代起已经大量使用:准备一段现成的代码,调用者可以随时跳转至此段代码的起始地址,执行完后再返回跳转时的后续地址。CPU为此准备了现成的调用指令,调用时可以压栈保护现场,调用结束后从堆栈中弹出现场地址,以便自动返回。借堆栈保护现场真是一项绝妙的发明,它使调用者和被调者可以互不相识,于是才有了后来的函数和构件,使吾辈编程者如此轻松愉快。若评选对人类影响最大之发明,在火与转载 2015-02-13 15:06:15 · 360 阅读 · 0 评论 -
单片机拾遗
1,按键处理的一种方法2,trins.h原创 2015-02-06 10:42:35 · 552 阅读 · 0 评论 -
C/C++中extern关键字详解
1 基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。 也就是说extern有两个作用,第一个,当它与"C"一起连用时,如: extern "C" void fun(int a, int b);则告诉编译器在编译fun这个函数名时按着C的规则去翻译相应的函数转载 2015-02-05 22:03:33 · 291 阅读 · 0 评论