C语言
文章平均质量分 53
面包呢
bug bug bug
展开
-
大小端转换
大小端转换只适用于uint16uint16 Endian16_Convert(uint16 in){ uint16 out; out = in << 8; out |= (in & 0xFF00) >> 8 ; return out;}只适用于uint32uint32 Endian32_Converts(uint32 in){ unsigned int out; out = in << 24;原创 2022-02-17 09:22:45 · 343 阅读 · 0 评论 -
c语言 char *str 与char str[]区别
c语言 char *str 与char str[]一、概念不同C语言中没有特定的字符串类型,常用以下两种方式定义字符串:一种是字符数组,另一种是指向字符串的指针。char *str 声明的是一个指针,这个指针可以指向任何字符串常量。char str[] 声明的是一个字符数组,数组的内容可以是任何内容,严格意义上说,末尾加上’\0’ 之后才能算是字符串。二、变量不同char *str里的str是指针变量,str的值未初始化(局部变量的话。全局则自动初始化为NULL)。char str[]里str原创 2021-09-27 15:10:12 · 11988 阅读 · 0 评论 -
重载函数、重载运算符
C++ 重载运算符和重载函数C++ 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。当您调用一个重载函数或重载运算符时,编译器通过把您所使用的参数类型与定义中的参数类型进行比较,决定选用最合适的定义。选择最合适的重载函数或重载运算符的过程,称为重载决策。C++ 中的函数重载在同一个作用域内,可以声明几个功能类似的同名函数,但是这些同名函数的形式参数(指原创 2021-09-24 16:38:28 · 280 阅读 · 0 评论 -
分配内存方法是否会对申请的内存进行初始化(malloc、calloc、realloc)
malloc 函数:void *malloc(unsigned int size)在内存的动态分配区域中分配一个长度为size的连续空间,如果分配成功,则返回所分配内存空间的首地址,否则返回NULL,申请的内存不会进行初始化。calloc 函数: void *calloc(unsigned int num, unsigned int size)按照所给的数据个数和数据类型所占字节数,分配一个 num * size 连续的空间。calloc申请内存空间后,会自动初始化内存空间为 0,但是mal原创 2021-09-24 15:48:58 · 3196 阅读 · 0 评论 -
cmux
CMUX协议小结名词解释CMUX:多串口协议DLC:数据链路连接DM:断开模式FCS:帧校验序列UIH:未编号的带校验头的信息UI:未编号的信息MSC:modem状态命令HDLC:高级数据链路控制1.什么是CMUXCMUX是指串口多路复用。串口的多路复用器模式,就是使一个串行接口能够将数据传输到四个不同的客户应用程序。实际的应用中,一个物理串口某一时间段内只能传输一个上层应用的数据流,如果有多个数据流同时要发送怎么办?除了访问多个UART还有别的方法吗?CMUX协议的功能就是利用一原创 2021-05-18 16:00:12 · 1660 阅读 · 0 评论 -
strtol函数、strtoul函数
strtol函数:将字符串转换成long(长整型数)描述C 库函数 long int strtol(const char *str, char **endptr, int base) 把参数 str 所指向的字符串根据给定的 base 转换为一个长整数(类型为 long int 型),base 必须介于 2 和 36(包含)之间,或者是特殊值 0。声明下面是 strtol() 函数的声明。long int strtol(const char *str, char **endptr, int bas原创 2020-10-13 10:11:37 · 1066 阅读 · 0 评论 -
bsearch()函数
bsearch()函数C语言中 bsearch 包含在<stdlib.h>头文件中,此函数可以根据你给的条件实现二分查找,如果找到元素则返回指向该元素的指针,否则返回NULL;对于有多个元素匹配成功的情况,bsearch()未定义返回哪一个。使用 bsearch 函数也要自己定义比较子函数。函数原型void *bsearch(const void *key, const void *base, size_t num, size_t size, int (*cmp)(const void *原创 2020-10-10 10:28:03 · 7994 阅读 · 2 评论 -
C语言枚举类型用法说明
emmm大概是假期太长,以致于基础的知识都快忘掉了,哎。。。那就记个流水账,防止老年痴呆趴走进并深刻的了解枚举类型在实际问题中,有些变量的取值被限定在一个有限的范围内。例如,一个星期内只有七天,一年只有十二个月,一个班每周有六门课程等等。如果把这些量说明为整型,字符型或其它类型显然是不妥当的。为此,C语言提供了一种称为“枚举”的类型。在“枚举”类型的定义中列举出所有可能的取值,被说明为该“枚举...原创 2020-04-13 11:03:57 · 684 阅读 · 0 评论 -
err_code啥意思?
在C++中,err_code为错误代码执行时的反应抛出;即,返回值检测,若函数执行异常,会在下一个函数判断。原创 2020-04-09 11:55:52 · 2735 阅读 · 0 评论 -
数据结构
啥是数据结构数据结构是计算机存储、组织数据的方式。数据结构是指相互之间存在一种或多种特定关系的数据元素的集合。通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。数据结构的分类数据结构分为8类有:数组、栈、队列、链表、树、散列表、堆、图。数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成 。1、数组...原创 2019-11-26 23:01:07 · 243 阅读 · 0 评论 -
联合体
联合体联合体union,即共用体联合体与结构体不同之处“联合”与“结构”有一些相似之处。但两者有本质上的不同。在结构中各成员有各自的内存空间,一个结构体变量的总长度大于等于各成员长度之和。而在“联合”中,各成员共享一段内存空间,一个联合变量的长度等于各成员中最长的长度。特别说明,这里所谓的共享不是指把多个成员同时装入一个联合变量内,而是指该联合变量可被赋予任一成员值,但每次只能赋一种值,...原创 2019-10-14 16:08:43 · 319 阅读 · 0 评论 -
什么是gcc
啥是gccLinux系统下的GCC(GNU C Compiler)是GNU推出的功能强大、性能优越的多平台编译器,是GNU的代表作品之一。gcc是可以在多种硬体平台上编译出可执行程序的超级编译器,其执行效率与一般的编译器相比平均效率要高20%~30%。GCC编译器能将C、C++语言源程序、汇程式化序和目标程序编译、连接成可执行文件,如果没有给出可执行文件的名字,gcc将生成一个名为a.out的...原创 2019-10-14 13:17:06 · 1350 阅读 · 0 评论 -
关键字volatile
关键字volatile有什么含义含义:volatile 关键字告诉编译器不要持有变量的临时性拷贝在哪些情况下使用1)并行设备的硬件寄存器(如:状态寄存器)2)一个中断服务子程序中会访问到的非自动变量(Non-automatic variables)3)多线程应用中被几个任务共享的变量小提示关键字“volatile”,在 C 语言中该关键字用于表示变量是易变的,要求编译器不要优化。这些...原创 2019-10-08 19:23:57 · 96 阅读 · 0 评论 -
C++:extern
在C++ 程序中调用被 C 编译器编译后的函数,为什么要加 extern “C”声明C++为了支持函数重载,函数在被C++编译后在符号库中的名字与C语言的不同假如某个函数的原型为void fun(int x, int y);该函数被C编译器编译后在符号库中的名字为_fun,而C++编译器则会产生_fun_int_intextern “C”告诉编译器按照C语言方式编译和链接...原创 2019-10-08 19:07:54 · 78 阅读 · 0 评论 -
局部变量、全局变量、静态变量
局部变量定义:局部变量指在程序中只在特定过程或函数中可以访问的变量。换言之,在一个函数内部定义的变量是内部变量,它只在本函数范围内有效,也就是说只有在本函数内才能使用它们,在此函数以外时不能使用这些变量的,它们称为局部变量。全局变量定义:在函数外定义的变量是外部变量,外部变量就是全局变量,全局变量可以为本文件中其它函数所共用,它的有效范围从定义变量的位置开始到本源文件结束。局部变量与全局变...原创 2019-09-16 09:53:37 · 6504 阅读 · 0 评论 -
extern
extern基本解释:extern可以置于变量或者函数前,以标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。此外extern也可用来进行链接指定。问题三连一、在一个源文件里定义了一个数组:char a[8];在另外一个文件里用下列语句进行了声明:extern char *a;问,合法吗?解:1、No,程序运行时会告诉你非法访问。原因:指向类型T...原创 2019-09-16 21:39:44 · 198 阅读 · 0 评论 -
分配空间那点事
int *p1 = new int[10]; int *p2 = new int[10]();解答:p1申请的空间里的值是随机值,p2申请的空间里的值已经初始化;对于内置类型而言,new仅仅是分配内存,除非后面显示加(),相当于调用它的构造函数;对于自定义类型而言,只要一调用new,那么编译器不仅仅给它分配内存,还调用它的默认构造函数初始化,即使后面没有加()...原创 2019-09-16 21:43:15 · 133 阅读 · 0 评论 -
编译优化的特点
程序的完整编译过程分为是:预处理,编译,汇编等,编译阶段的编译优化的特点:1、函数内联可以避免函数调用中压栈和退栈的开销2、For循环的循环控制变量通常很适合调度到寄存器访问3、强度削弱是指执行时间较短的指令等价的替代执行时间较长的指令...原创 2019-09-16 21:45:38 · 208 阅读 · 0 评论 -
虚函数与纯虚函数
虚函数定义:在某基类中声明为 virtual 并在一个或多个派生类中被重新定义的成员函数,用法格式为:virtual 函数返回值类型 虚函数名 (形参表){ 函数体}实现多态性,通过指向派生类的基类指针或引用,访问派生类中同名覆盖成员函数纯虚函数纯虚函数是一种特殊的虚函数,在许多情况下,在基类中不能对虚函数给出有意义的实现,而把它声明为纯虚函数,它的实现留给该基类的派生类...原创 2019-09-16 21:54:14 · 219 阅读 · 0 评论 -
fopen函数的打开模式
fopen()函数程序使用fopen()函数打开文件,包含头文件 #include <stdio.h>fopen()函数的第一个参数是待打开文件的名称,或者说是一个包含改文件名的字符串;第二个参数是指定待打开文件的模式。打开模式模式字符串含义“r”以读模式打开文件“w”以写模式打开文件,把现有文件的长度截为0,如果文件不存在,则创建一个新文件...原创 2019-09-17 09:53:34 · 4413 阅读 · 0 评论 -
交换变量
交换变量交换两个变量的值,即a=3,b=7交换后a=7,b=3?1、加减法a=a+b;b=a-b;a=a-b;2、异或法a=a^b;b=a^b;a=a^b;3、变换法tmp=a;a=b;b=tmp;原创 2019-09-20 09:51:58 · 162 阅读 · 0 评论 -
字符串反转
输入字符串“student”;输出结果“tneduts”#include <stdio.h>#include <string.h>int mian (){ char *s="I am a student"; size_t len=strlen(s); char *t=s+len-1; while(t>=s){ printf("%c",*t); t...原创 2019-09-20 13:28:32 · 143 阅读 · 0 评论 -
C语言小知识
一、头文件ifndef/define/endif的作用是什么?答:防止头文件多次调用二、#include<file.h>与#include"file.h"有何区别?答:#include在系统路径查找file.h#include"file.h"在当前项目路径查找file.h三、定义一个宏实现MAX,找出a,b中的最大值答:#define MAX(a,b) ((a)>(...原创 2019-10-08 18:38:41 · 118 阅读 · 0 评论 -
解释代码问题--内存空间
打印输出内容,如果代码存在问题,将解释void GetMemory(char **p, int num){ *p = (char *)malloc(num);}void Test1(){ char *str = NULL; GetMemory(&str, 100); strcpy(str, "hello"); printf("%s\n", str);}输出...原创 2019-10-08 18:46:44 · 161 阅读 · 0 评论 -
malloc与new的区别
malloc与new的区别相同点都用于动态申请内存不同点1、malloc是库函数,new是c++运算符2、malloc需要指定申请的内存大小,new不需要指定申请的内存大小3、new创建类时,会自动调用构造函数,malloc不会自动调用构造函数...原创 2019-10-08 18:54:34 · 202 阅读 · 0 评论 -
贪吃蛇n
太懒了,一直都没有更新贪吃蛇新的代码,那就先来一个完整版的贪吃蛇代码把!#include <pthread.h> #include <curses.h> #include <stdlib.h> #define MAP_WIDTH 20 #define MAP_LENTH 20 struct snack { int x; ...原创 2019-09-11 23:20:43 · 316 阅读 · 0 评论