C语言系列
Freely~
Enjoy coding
展开
-
字节对齐
近日在工作中遇到一个奇怪问题,A程序发送一个结构给B程序,在B程序接收后,B程序按照A程序的结构进行解析,但始终不对。看过结构定义后,虽然知道有可能会出现字节对齐问题,一直怀疑是他们消息传输构造不对。经过GDB确认A程序发出的结构是正确的,在B程序接收处也同样没问题。当调试到转化处时才发现确实是字节对齐导致的。下面举例说明(32bit Linux Gcc)。server.c#includ原创 2018-01-14 13:46:35 · 299 阅读 · 0 评论 -
常用变量名命名方法
目前常用的变量名命名方法有以下几种: 1.驼峰法 驼峰法以小写开头,如 myApp,myName等类似命名。2.匈牙利命名法 以变量类型的缩写开头,如int iCount;unsigned int uiNum等类似命令。3.帕斯卡命名法 帕斯卡命名方法与驼峰法有点类似,它以大写开头,后面与驼峰相似。如MyApp,MyName等4.下划线命名法 下划...原创 2018-03-13 21:46:46 · 6949 阅读 · 0 评论 -
如何得到程序中6字节的结构体
在工作中我们可能会遇到这样的情况,我们知道有个大小为100字节的变量存在内存未释放的情况,但是很难从数量庞大的代码中寻找该结构体。那我们有什么方法可以快速找到么?我们在gcc编译时通常会添加一些编译选项用来保证程序的质量,今天我们就用-Wlarger-than=x的选项来查找我们需要的结构体。#include <stdio.h>typedef struct{ int...原创 2018-04-14 11:36:00 · 361 阅读 · 0 评论 -
你需要知道的指针强转
在工作中经常可以看到函数中传递指针,同时偶尔也能看到指针强转的滥用,今天就来说说函数中的指针强转。无论何时都不应该出现不同类型的指针强转,如int型指针转为char型指针,int型指针转为double指针等。应确保在传递过程中指针类型不改变。如下示例:#include <stdio.h>void test(void *b){ int c=0; ...原创 2018-04-13 20:21:35 · 625 阅读 · 1 评论 -
输入一个正数 n,输出所有和为 n 连续正数序列
题目:输入一个正数 n,输出所有和为 n 连续正数序列 分析:如 15,1+2+3+4+5=4+5+6=7+8=15,可以看出有3组序列。此处可以看出当数为奇数时,两连续数相加可以得到,这种组合为数字最大的组合。故我们可以从1到正数的一半(n/2+1)遍历所有和的组合。 #include<stdio.h>void seq(unsigned int n){ in...原创 2018-05-12 22:27:31 · 4021 阅读 · 0 评论