
C
C
~AI钢铁侠~
怕什么真理无穷,进一寸有进一寸的欢喜!
展开
-
数组、字符串及字符串相关函数
第一部分:复习1、预处理阶段主要进行了3个工作:宏定义、文件包含、条件编译2、宏定义:用宏值代替宏名。分为不带参数宏定义和带参数宏定义3、宏定义语句:#define 宏名(参数列表) 字符串。4、宏定义仅仅是简单的替换,不进行语法正确性检查5、文件包含:将其他文件的内容全部包括进本文件中6、文件包含语句:#include 或 #include"文件"。使用会去C库函数中寻找原创 2017-04-29 11:28:05 · 898 阅读 · 0 评论 -
使用C语言编程实现COM口数据的收发
#include <stdio.h> #include <windows.h>#include <stdlib.h>#include <string.h> #include <conio.h> #include <winnt.h> int main(){DWORD dwLength;char recvBuf[102...转载 2018-05-28 19:22:39 · 2443 阅读 · 0 评论 -
使用C语言操作串口
其实这并不是一件很难的事,在自己动手实验之前,我自然是知道现代操作系统都将设备看成文件来处理,这无疑降低了程序员操作硬件的难度,使用标准IO就可以操作硬件。我上网查了一下“windows C语言 串口”,希望能得到一些示例,但是没有成功,我得到的不是用CreateFile就是用这个模块那个模块,甚至扯上了用BIOS等恐龙时代的东东。无语,还是自己试一下的好。[c-sharp] view plain...转载 2018-05-28 19:26:52 · 7623 阅读 · 5 评论 -
关于VS2017中fopen、fscanf等函数无法使用的问题
本人最近用VS2017编写了一个C程序,用来读取串口数据,程序如下:#include <stdio.h> #include <windows.h> int main(void){ FILE *fp; char temp; char buf[100]; if ((fp = fopen("com6", "r")) == NULL) puts("Can't open co...原创 2018-05-30 15:14:46 · 8021 阅读 · 0 评论 -
十六进制的几种输出方式
/* time:2016.6.20 function: aim:测试十六进制的不同输出方式,%x,%X,%#x,%#X;*/#include <stdio.h>#include <stdlib.h>int length(char a[]); //因为函数位于main()函数之后,所以当引用这个函数时应该首先进行声明便于之后的引用int main(void)...转载 2018-05-30 16:16:22 · 9067 阅读 · 0 评论 -
break与continue的的用法以及区别
/*break与continue的的用法以及区别1.当它们用在循环语句的循环体时,break用于立即退出本层循环,而continue仅仅结束本次循环(本次循环体内不执行continue语句后的其它语句,但下一次循环还会继续执行。2. 如果有多层循环时,break只会跳出本层循环,不会跳出其他层的循环3. break可用于switch语句,表示跳出整个switch语句块,而continue则不能单独...转载 2018-07-11 10:48:13 · 908 阅读 · 0 评论 -
十六进制转double
要明白如何将十六进制转换为float或double,需要了解浮点数的二进制存储和转换方式。float和double在存储方式上都遵从IEEE的规范,且float遵从IEEE R32.24,而double遵从R64.53。具体转换规则可以参考http://www.cnblogs.com/dolphin0520/archive/2011/10/02/2198280.html。按照转换规则,写出HexT...转载 2018-07-11 14:56:29 · 12404 阅读 · 4 评论 -
C/C++浮点数在内存中的存储方式
任何数据在内存中都是以二进制的形式存储的,例如一个short型数据1156,其二进制表示形式为00000100 10000100。则在Intel CPU架构的系统中,存放方式为 10000100(低地址单元) 00000100(高地址单元),因为Intel CPU的架构是小端模式。但是对于浮点数在内存是如何存储的?目前所有的C/C++编译器都是采用IEEE所制定的标准浮点格式,即二...转载 2018-07-11 15:59:28 · 338 阅读 · 0 评论 -
DSP 的双缓冲串口程序设计
原创 2018-07-23 17:38:47 · 593 阅读 · 0 评论 -
C语言中的各输出格式含义
%g是C语言printf()函数的一个输出格式类型,它表示以%f%e中较短的输出宽度输出单、双精度实数,在指数小于-4或者大于等于精度时使用%e格式 printf()输出格式类型说明: 输出类型 格式字符意义 a 浮点数、十六进制数字和p-计数法(C99) A 浮点数、十六进制数字和p-计数法(C99) c 输出单个字符...原创 2018-07-25 13:53:49 · 4152 阅读 · 0 评论 -
大端和小端的判断及转换
当前的存储器,多以byte为访问的最小单元,当一个逻辑上的地址必须分割为物理上的若干单元时就存在了先放谁后放谁的问题,于是端(endian)的问题应运而生了,对于不同的存储方法,就有大端(big-endian)和小端(little- endian)两个描述。字节排序按分为大端和小端,概念如下大端(big endian):低地址存放高有效字节小端(little endian):低字节存放...原创 2018-07-26 08:29:14 · 1333 阅读 · 1 评论 -
关于uint8_t/uint16_t/uint32_t/uint_fast16_t
在嵌入式编程中经常遇到用uint8_t、uint16_t、uint32_t、uint_fast16_t之类的关键字定义一些整型变量,但是具体表示什么意思,并不是太清楚,只是把它当成int之类的整型变量定义关键字。在自己理解他们之前,先写一下在网上搜到的常见的对他们的解释。常见解释(都是个人见解,不一定准确全面)#define uint unsigned int;int和uint的区别:一个有符...转载 2018-03-27 14:10:32 · 5436 阅读 · 0 评论 -
C语言中的枚举和联合体
一、枚举类型 enum:在实际应用中,有的变量只有几种可能取值。如人的性别只有两种可能取值,星期只有七种可能取值。在 C 语言中对这样取值比较特殊的变量可以定义为枚举类型。所谓枚举是指将变量的值一一列举出来,变量只限于列举出来的值的范围内取值。 枚举的定义枚举类型定义的一般形式为: enum 枚举名 { 枚举值表 };eg:enum weekday{sun,mon,tue,wed,thu,fr...转载 2018-04-09 16:47:29 · 774 阅读 · 0 评论 -
C语言基础语法2
类型转换:1.自动转换:运算过程中,运算符两边类型不相同就会自动转成较大的类型进行运算.2.赋值转换:赋值运算的过程中产生的转换,=号左右两边的类型不相同,则发生转换.char int float doublechar int int --> char 4B -->1Bchar类型只有一个字节,int有四个字节,赋值时直接将int的内存的低一个原创 2017-04-21 18:41:39 · 458 阅读 · 0 评论 -
C 语言基础语法1
C语言基本语法:/* ********************************************数据类型说明数据大小char 1short 2int 4float 4double 8存储类型存放在内存中的位置(堆、栈(auto)、静态区域、代码段)功能代码的操作(干什么)+原创 2017-04-21 18:40:29 · 577 阅读 · 0 评论 -
C语言register关键字——最快的关键字
C语言register关键字—最快的关键字 (2012-08-24 14:09:24)转载▼标签: 杂谈分类: C/C register:这个关键字请求编译器尽可能的将变量存在CPU内部寄存器中,而不是通过内存寻址访问,以提高效率。注意是尽可能,不是绝对。你想想,一个CPU 的寄存器也就那么几个或几十个,你要转载 2017-05-12 22:30:35 · 383 阅读 · 0 评论 -
如何测试大端存储和小端存储
/*1. 利用不同的数据类型占用空间不一样测试*/#include int main(){ short int x; char x1,x2; x = 0x1122; x1 = ((char *)&x)[0]; //低地址 x2 = ((char *)&x)[1]; //高地址 printf("x1=%x\n原创 2017-05-12 22:36:07 · 371 阅读 · 0 评论 -
函数、指针、数组的组合 及结构体和共用体
1.数组与函数1) 数组元素作参数large(int x, int y){...};large(a[2], a[3]); 1) 数组名作参数计算数组中用户6个月的积分平均值float aver(float b[6]) {....}float a[6]...;av = aver( a );a. 数组名作函数参数,两个数组分别定义。b. 实参数组和形参数组类原创 2017-05-12 22:43:35 · 922 阅读 · 0 评论 -
存储类型_malloc_typedef小结
一、存储模型存储类型(storage class)变量可以通过生存周期(内存占用时间->静态与动态)。作用域(有效区域->全局与静态)、连接点来描述。auto普通局部变量,是自动存储,变量会自动分配和释放,函数内的变量和复合语句内声明的变量,在系统运行时分配空间赋初值,在调用结束时释放空间,这类变量就是auto变量,auto变量由系统自动分配在 栈空间。auto可以省略原创 2017-05-12 22:50:40 · 338 阅读 · 0 评论 -
指针、数组、函数阶段小结
引子:数据在内存中是如何存储的,又是如何读取的?内存编号就是内存的地址(内存中每个字节都有一个编号,即地址)1.概念:地址:内部存储器的编号,称为地址。如变量a的位置编号,变量b的位置都是指针。指针变量:专门存放地址的变量称为指针变量。地址、指针、指针变量都称为指针。一、变量的地址(指针)和指向变量的地址变量(指针)概念:变量的指针: 就是变量的地址。指针变量: 是原创 2017-05-09 19:24:01 · 361 阅读 · 0 评论 -
指针与数组总结
总结:一维数组与指针type a[N]];sizeof(a[0])==> sizeof(a)==> N*type sizeof(&a)==> 4a[0]+1==>值加1&a[0]+1 ==>加一个元素a+1 ==> 加一个元素,+type &a+1 ==> 加一个数组type *p = a;sizeof(p)==> 4sizeof(*p)==>原创 2017-05-09 19:27:04 · 358 阅读 · 0 评论 -
sscanf用法
fread :以字节位计算长度,按照指定的长度和次数读取数据,遇到结尾或完成指定长度读取后停止.fscanf :格式化读取,按照指定的格式串进行读取数据,并将数据初始化为指定的格式.所以在文本方式下才能有效的判断数据内容.fgets :整行读取,遇到回车换行或结尾停止.在文本方式时使用.其实文本和二进制的差别就在于读取的数据,文本方式会默认为是ASCII码,二进制方式则原样将数据读转载 2017-11-14 10:05:17 · 313 阅读 · 0 评论 -
带参宏的定义
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中含有各个形参。带参宏调用的一般形式为: 宏名(实参列表); 例如: #define M(y) y*y+3*y //宏定义 // Code k=M(5); //...转载 2018-04-09 15:46:07 · 1747 阅读 · 0 评论 -
C语言中的条件表达式
条件运算符是C语言中唯一的三元运算符。例如:x = (y < 0) ? -y : y;该语句的意思是“如果y小于0,那么x = -y; 否则,x = y ”。用If else可以表达为if (y < 0) x = -y;else x = y;条件表达式的通用形式如下:expression1 ? expression2 :...原创 2019-08-14 23:20:35 · 16988 阅读 · 0 评论