代码编织梦想

C 结构体字节对齐的方法-爱代码爱编程

字节对齐在通讯协议解析中用起来相当方便,这里记录下C结构体字节对齐的几种方法: 方法1: #pragma pack(1) //包含你所需要的结构体 #pragma pack() 方法2:attribute ((packed))修饰你所需要的结构体 typedef struct _update_pack_t { }__attribute__ ((

C宏常见面试题-爱代码爱编程

1.写一个“标准”宏,这个宏输入两个参数并返回较小的一个 答:#define MIN(x, y) ((x)<(y)?(x):(y))//注意x,y要加括号,因为x,y如果有复合运算会出现问题。 2.宏定义中#与##的作用? 答:#是把宏参数转化为字符串的运算符,##是把两个宏参数连接的运算符。 例如:   #define STR(arg)

win32 Api 那是我面向过程的转变-爱代码爱编程

win32 Api 写hello windows      本人简单记录win32 方式写最基本的hello windows,这个程序3年前都弄过,也是纪念一下当初从黑框框面向过程的方式,逐渐变成面向对象的过程。上大学的时候玩一些游戏,看到别人使用辅助软件,于是也想研究一下,当时是知道易语言可以写,基本上都是别人写好的包,来调用而已,我想了解基本东西,于

C语言之多维数组-爱代码爱编程

多维数组         如果,数组的维数不止一个,我们通常称为多维数组。例如,下面的声明。 int num[3][3];         直观看起来,这是一个3行3列的数组。但是实际上在内存中,数组是按照线性顺序存放的。也就是说,我们把上面这个数组理解为一个一维数组,只不过这个一维数组的3个元素都是一维数组而已。如下所示:         那

《C和指针》阅读笔记(6)-爱代码爱编程

本文继续总结《C和指针》第7章的内容,本章的内容由6个部分构成:函数定义、函数声明、函数参数、ADT、递归与迭代、可变参数列表。 文章目录 函数定义函数声明函数参数的传递抽象数据类型(ADT)递归与迭代可变参数列表关注我 函数定义 ANSI C标准的函数语法形式: // 风格1 类型 函数名(形式参数) 代码块 // 风格2 类型 函数

【数据结构学习记录9】——双向队列-爱代码爱编程

循环队列 一.概述二.原理实现1.节点2.循环队列结构3.队列的初始化以及空队列判断4.队列队满的判断5.队列的入队6.队列的出队三.代码实现 一.概述 因为队列的特殊构造,所以我们一般就像上节那样,使用链式列表。但是把,有些时候,顺序结构有顺序结构的好处,所以我们也是可以通过某种方式来用顺序表实现列表。那就是通过循环队列来实现。 二.原理

编写一个c程序的头文件-爱代码爱编程

目录 前言第一步、创建一个空项目第二部、创建cpp文件第三步、创建头文件最后、调用头文件 前言 我用的是编译器 visual studio2010编译器。无论是哪个编译器创建头文件的过程都是一样的。 为啥要用写一个头文件? 在我看来用头文件是十分简洁的,当我们写的函数特别多的时候。 如果把这些函数和main函数放在同一个文件内特别的不简洁。

C语言学习笔记----sizeof()的使用-爱代码爱编程

关于sizeof()函数的介绍,百度百科介绍如下: 其核心功能就是判断数据类型长度符,先通过一个实际例子看一下。 通过上面的例子可以看到字符型和无符号字符型长度为都是1,整形和无符号整形长度都为2。字符数组cs的长度为8,其中字符长度为7加上结束符,共占8个字节。字符串指针pcs长度为3。后面的x9、x12、x16这三个都是指针,长度都是3,虽

C语言调用C++动态链接库-爱代码爱编程

C调用C++接口,这个问题的解决和C++调用C动态链接库是类似的。话不多说,直接上例子来进行说明。 helloworld_cpp.h文件 #include<iostream> using namespace std; class CHello { private: public: CHello(); ~CHell

for(;;)和while(true)-爱代码爱编程

for(;;)和while(true)的区别: 总结 for(;;) 比 while(true) 好 为啥:如下(底层完全不同) “死循环”有两种写法:for(;;)和while(true), 两者有啥区别,为啥源码中多数是for( ; ; )这种形式的,   编译前              编译后 while (1);         mo

【数据结构学习记录8】——队列-爱代码爱编程

@队列 一.概念二.原理实现1.节点2.队列3.入队4.出队5.销毁三.代码 一.概念 和栈相反,队列是一种先进先出(first in first out = FIFO)的结构。FIFO是单片机的FIFO吗?它是一种线性表,只允许在表的一端插入元素,另一端删除元素。在队列中,能插入的一端叫队尾,允许删除的一端叫队头。 二.原理实现 1.节

C语言预处理指令#error-爱代码爱编程

  在FreeRTOS的FreeRTOS.h文件中看到一句代码 #ifndef configMINIMAL_STACK_SIZE #error Missing definition: configMINIMAL_STACK_SIZE must be defined in FreeRTOSConfig.h. configMINIMAL_STAC

C中声明和定义的区别-爱代码爱编程

  对变量来说,声明(declaration)指向编译器说明变量的类型和名字;定义(definition)指向编译器说明变量的类型和名字的同时,为变量分配内存,可指定初值也可不指定。可以看出,定义包含于声明中,平常最常见的 int var; 就是一种声明,或者说未指定初值的定义。   两者的其他区别如下:   1. 变量只可以定义一次,但可以声明多次

【数据结构学习记录7】——栈与递归(其实更多的是解析递归)-爱代码爱编程

@栈与递归(其实更多的是解析递归) 一.递归1.概念2.实现3.较难的递归分析——汉诺塔二.栈与递归的关系 一.递归 1.概念 什么是递归,就是高中数学上我们学的那个,递推式。当然,如果把一个递推公式用函数来表示,那么我们可以叫这个函数递归函数。递归函数是一个直接调用自己或通过一系列的语句简介地调用自己的函数,称作递归函数。 比如我们的阶

C中局部变量、全局变量和静态变量辨析-爱代码爱编程

  根据局部和全局、静态和非静态,可以将变量分为4种:非静态局部变量、非静态全局变量、静态局部变量和静态全局变量,为方便起见,下称为局部变量、全局变量、静态局部变量和静态全局变量。   从作用域上:   1. 局部变量只在声明它的函数中可用;   2. 全局变量在声明它的源文件中可用,可通过extern关键字被其他源文件使用;   3. 静态局部变量只在

C语言指针超全面透析(原来你一直没有搞懂C语言指针是因为没有理解其中的规律)-爱代码爱编程

文章目录 写在前面一、思考指针的基础1、指针的实质2、指针的层次3、指针的分类4、两个符号(&和*)二、单指针(int *p)三、指针数组(int *p[10])四、行指针(int (*p)[10])五、指针的指针(int **p)六、指针函数(int *fun( ))七、函数指针(int (*p)( )) 写在前面 指针是C/C++

linux下读取ATI公司力传感器数据&&c++中调用c源文件&&移植到ros+问题解决-爱代码爱编程

linux下读取ATI公司力传感器数据&&c++中调用c源文件&&移植到ros+问题解决 源文件在cpp文件中调用c文件ros中实现存在的问题还愿 源文件 关于源代码中makefile文件的编写,进行学习。 netft: netft.o gcc netft.o -o netft netft.o: netf

磕代码:c/c++/java:输入7个数,去掉最值后求均值;数组定义;sort函数用法;for循环找最值;java数列的读取-爱代码爱编程

c: #include<stdio.h> int main(){ int a[7]; int max=-1; int min=101; int sum=0; //while(scanf("%d",&a)!=EOF){ for(int i=0;i<7;i++){

leetcode 1207. 独一无二的出现次数-爱代码爱编程

给你一个整数数组 arr,请你帮忙统计数组中每个数的出现次数。 如果每个数的出现次数都是独一无二的,就返回 true;否则返回 false。   示例 1: 输入:arr = [1,2,2,1,1,3] 输出:true 解释:在该数组中,1 出现了 3 次,2 出现了 2 次,3 只出现了 1 次。没有两个数的出现次数相同。 示例 2: 输入:a

【数据结构学习记录6】——栈的应用-爱代码爱编程

一.进制转换 1.原理 因为我们对N进制转换都是通过除N取余的方法来实现的,然后将余数的结果倒序输出。因为是倒序嘛,所以是后进先出,那就是我们栈的模型。所以我们只需要将每次取余的结果放入栈中,最后再全部输出,就完成了我们的进制转换。 那么就举一个10转N进制的程序吧(0<N<=36)。 2.代码实现 因为这个部分的代码比较简单,所以就直