随笔分类 -  C/C++

摘要:#include <stdio.h> #define MAXS 20 void reverse( char *p ); void reverse( char *p ) { int i = 0, q = 0, h, tmp; while (p[i] != '\0') i++; h = i - 1; while (q <= h) { tmp = p[q]; p[q] = p[h]; p[h] = tm 阅读全文
posted @ 2019-10-06 14:43 wdliming 阅读(532) 评论(0) 推荐(0) 编辑
摘要:这是给编译器用的参数设置,有关结构体字节对齐方式设置, #pragma pack是指定数据在内存中的对齐方式。 #pragma pack (n) 作用:C编译器将按照n个字节对齐。#pragma pack () 作用:取消自定义字节对齐方式。 #pragma pack (push,1) 作用:是指把 阅读全文
posted @ 2019-09-26 12:38 wdliming 阅读(533) 评论(0) 推荐(0) 编辑
摘要:前言 字节对齐是我们初学C语言就会接触到的一个概念,但是到底什么是字节对齐?对齐准则又是什么?为什么要字节对齐呢?字节对齐对我们编程有什么启示?本文将简单理一理字节对齐的那些事。 什么是字节对齐 计算机中内存大小的基本单位是字节(byte),理论上来讲,可以从任意地址访问某种基本数据类型,但是实际上 阅读全文
posted @ 2019-09-24 19:19 wdliming 阅读(327) 评论(0) 推荐(0) 编辑
摘要:如果是为指针p申请一段内存,上面的代码能达到目的吗? 通过前面的内容分析,肯定是达不到预期效果的。运行结果: 这是为什么呢?我们还是利用前面所知来分析,由于传递给getMemory函数的参数都是一个副本,因此函数内的p也是外部p的一个副本,因此即便在函数内部,将p指向了一块新申请的内存,仍然不会改变 阅读全文
posted @ 2019-09-03 08:52 wdliming 阅读(161) 评论(0) 推荐(0) 编辑
摘要:首先从静态变量说起. C语言里面静态变量有三种: 分别是外部链接性,内部链接性和无链接性.声明外部链接的变量的方法是在代码块外面声明它. 此变量是全局变量,多文件中亦可用.声明内部链接的变量的方法是在代码块外面声明它并加上static限定符. 此变量是全局变量,但仅在本文件中可用.声明无链接的变量的 阅读全文
posted @ 2019-09-02 15:56 wdliming 阅读(671) 评论(0) 推荐(0) 编辑
摘要:int p; //一个整数 int p [5]; //一个包含5个整数的数组 int * p; //指向整数的指针 int * p [10]; //一个包含10个整数指针的数组 int ** p; //指向整数的指针 int(* p)[3]; //指向3个整数数组的指针 int(* p)(char 阅读全文
posted @ 2019-09-02 15:46 wdliming 阅读(229) 评论(0) 推荐(0) 编辑
摘要:C中有哪些数据类型? 回答: 有两种类型的数据类型,用户定义和预定义。预定义的数据类型是int,char,float,double等,用户使用标签struct,union或enum创建用户定义的数据类型。基本上,数据类型描述变量的大小和内存布局。 在C语言中,不同的数据类型具有不同的范围。范围因编译 阅读全文
posted @ 2019-09-02 15:45 wdliming 阅读(2629) 评论(0) 推荐(0) 编辑
摘要:两种表达都不同。让我们看一个示例代码来理解两个表达式之间的区别。 1 2 3 4 5 6 7 8 9 10 11 12 13 14 #include <stdio.h> int main(void) { int aiData[5] = {100,200,300,400,500}; int *piDa 阅读全文
posted @ 2019-09-01 21:55 wdliming 阅读(383) 评论(0) 推荐(0) 编辑
摘要:上面的代码会漏掉A,使用下面的解决了 for循环最好使用++i, 当我们需要一个循环或者只需要增加操作数时,预增量远远好于后增量,因为在后增量的情况下,编译器可能创建了一个需要额外时间的旧数据副本。这不是100%正确,因为现在编译器非常聪明,他们正在以一种在前后增量之间没有区别的方式优化代码。所以这 阅读全文
posted @ 2019-09-01 21:53 wdliming 阅读(227) 评论(0) 推荐(0) 编辑
该文被密码保护。
posted @ 2019-08-25 09:41 wdliming 阅读(57) 评论(0) 推荐(0) 编辑
摘要:导读:在C语言的世界里,栈的地位非常举足轻重,许多错误都可能和栈设置有关,那么该如何确定栈的大小? 今天分享一点栈知识,帮助你确定栈的大小,参考链接请点击下方的阅读原文。 其实很多编译工具是可以获取函数调用信息的,比如: KEIL 平台 可以使用参数: --callgraph:生成一个静态调用图(h 阅读全文
posted @ 2019-08-18 15:56 wdliming 阅读(863) 评论(0) 推荐(0) 编辑
摘要:1、安装vscode。 2、安装插件tcc。小巧,快速,符合ansi c, 法国大神级别程序员开发的编译器。 3、编写C代码,F10运行,即可得结果,对于验证一些语法很快捷,很方便。只需三步!! 阅读全文
posted @ 2019-08-13 10:04 wdliming 阅读(737) 评论(0) 推荐(0) 编辑
摘要:为确保消息数据的完整性,除了验证消息CRC之外,建议实现检查串行端口(UART)成帧错误的代码。如果接收消息中的CRC与接收设备计算的CRC不匹配,则应忽略该消息。下面的C语言代码片段显示了如何使用逐位移位和异或运算来计算Modbus消息CRC。使用消息帧中的每个字节计算CRC,除了包含CRC本身的 阅读全文
posted @ 2019-08-11 18:53 wdliming 阅读(6523) 评论(2) 推荐(0) 编辑
摘要:Return Value On success, the total number of characters written is returned.If a writing error occurs, the error indicator (ferror) is set and a negat 阅读全文
posted @ 2019-08-07 14:19 wdliming 阅读(456) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/stpeace/article/details/23792971 https://blog.csdn.net/qq_26437925/article/details/51582011 阅读全文
posted @ 2019-07-21 21:59 wdliming 阅读(289) 评论(0) 推荐(0) 编辑
摘要:https://blog.csdn.net/mrailence/article/details/52251201 https://blog.csdn.net/qq_14820081/article/details/89231995 https://blog.csdn.net/qq_35651984/ 阅读全文
posted @ 2019-07-21 21:09 wdliming 阅读(1198) 评论(0) 推荐(0) 编辑
摘要:#include #include /**************************************** * 函数指针结构体 ***************************************/ typedef struct _OP { float (*p_add)(float, float); float (*p_sub)(float, floa... 阅读全文
posted @ 2019-07-21 19:04 wdliming 阅读(486) 评论(0) 推荐(0) 编辑
摘要:https://segmentfault.com/a/1190000008293902?utm_source=tag-newest https://www.cnblogs.com/tinaluo/p/8327880.html https://zhuanlan.zhihu.com/p/28300026 阅读全文
posted @ 2019-07-21 17:41 wdliming 阅读(3482) 评论(0) 推荐(0) 编辑
摘要:https://www.cnblogs.com/ioleon13/archive/2010/03/02/1676621.html 实际工作中,对于回调函数一直是我不愿意去触碰的东西,一来由于被很多人搞得神秘兮兮的以为是很高深难懂的技术,二来在一般情况下通过互相包含类指针也能够解决问题,所以一直就不想 阅读全文
posted @ 2019-07-21 16:49 wdliming 阅读(853) 评论(0) 推荐(1) 编辑
摘要:https://blog.csdn.net/hellozex/article/details/81742348 1、基础知识 所谓回调,就是模块A要通过模块B的某个函数b()完成一定的功能,但是函数b()自己无法实现全部功能,需要反过头来调用模块A中的某个函数a()来完成,这个a()就是回调函数。如 阅读全文
posted @ 2019-07-21 16:44 wdliming 阅读(423) 评论(0) 推荐(0) 编辑