c语言及技巧
文章平均质量分 65
树懒的聪明
遥远的恒心!
展开
-
source insight 设置
转自:https://blog.csdn.net/listener51/article/details/78001463 1、Source Insight下载 2、常用设置 2.1 显示代码行数 Options->File Type Options... --> Editing Options -->勾选Show line numbers 2.2 选中单词后自动高亮 Options --> File Type Options... -->Editing...转载 2021-05-01 12:48:12 · 2431 阅读 · 0 评论 -
逗号表达式
首先从一个错误的操作写起,本来我要初始化一个数组。结果误写成这样的了: [cpp] view plaincopy int a[3][2]={(0,1),(2,3),(4,5)}; 这样一来,a[0][0]=1,a[0][1]=3,a[1][0]=5,其余元素等于0。 仔细查了下,这牵扯到两个问题。 1.数组的初始化方法 正转载 2014-11-09 11:43:53 · 282 阅读 · 0 评论 -
多维数组与指针 精析
可以认为 C语言中只有一维数组,没有真正的二维数组。如二维数组 a[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}} , 可以认为是一个 一维数组 : a[3]={ a[0], a[1], a[2] }其中 a[0],a[1],a[2] 又是三个有四个元素的一维数组, 即 a[0]={ 1,3,5,7 },a[1]={ 9,11,13,15转载 2014-10-10 13:42:34 · 394 阅读 · 0 评论 -
htonl、ntohl、htons、ntohs函数实现
typedef unsigned short int uint16; typedef unsigned long int uint32; // 短整型大小端互换 #define BigLittleSwap16(A) ((((uint16)(A) & 0xff00) >> 8) | \ (((ui转载 2014-10-10 08:33:40 · 519 阅读 · 0 评论 -
大端模式&小端模式 主机序&网络序
1. 主机序 不同的CPU有不同的字节序类型这些字节序是指整数在内存中保存的顺序,这个叫做主机序。最常见的有两种: 1. Little endian:将低序字节存储在起始地址。 即小端模式 2. Big endian:将高序字节存储在起始地址。 即大端模式 LE little-endian 最符合人的思维的字节序。地址低位存储值的转载 2014-11-14 16:43:28 · 411 阅读 · 0 评论 -
可变参数宏编写方法
#if #ifdef #if defined 在 GNU C 中,宏可以接受可变数目的参数,就象函数一样,例如: #define pr_debug(fmt,arg...) / printk(KERN_DEBUG fmt,##arg) 用可变参数宏(variadic macros)传递可变参数表 你可能很熟悉在函数中使转载 2014-10-10 14:49:19 · 419 阅读 · 0 评论 -
c语言字节对齐问题(二)
上一篇已经说了一些基本的struct成员变量的内存对齐的问题,现在来进一步看看位域在struct的运用,对减少内存的使用很用帮助,特别是在嵌入式领域。废话不多说了,看下面结构体 struct s { char a:4; int b:8; char c:4; }; 那么sizeof(s) = 4 先说下位域在转载 2014-11-15 16:39:13 · 270 阅读 · 0 评论 -
指针数组与数组指针
呵呵,实在是厌倦了绕口的解释。 指针数组,故名思义,就是指针的数组,数组的元素是指针; 数组指针,同样,就是直想数组的指针。 简单举例说明: int *p[2]; 首先声明了一个数组,数组的元素是int型的指针。 int (*p)[2]; 声明了一个指针, 指向了一个有两个int元素的数组。 其实这两种写法主要是因为运算符的优先级, 因为[]的优先级比*高。所以第一种写转载 2014-11-15 16:45:11 · 292 阅读 · 0 评论 -
C语言中字符串结束符'\0'的讨论
'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以这么写。在数值类型里就代表数字0。 数值类型存储时,最高位决定正负号,其他位都为0可不就是0了么? '\0'是转译字符,意思是告诉程序,这不是字符0,我要的是数字0的2进制直接放进来,因为acsii码的0可不是00000000 原来,在C语言中没有专门的字符串变量,通常用一个字符数组来存放一个转载 2014-10-16 22:31:55 · 748 阅读 · 0 评论 -
linux C 开发中重要的数据结构——结构体
在linux的驱动开发中,最常用的,也最重要的数据结构是结构体,它也最容易使人混淆。要掌握结构体,首先要弄明白运算符的优先级: 在所有运算符中,下面4个运算符的优先级是最高的:结构体运算符“.”和“->”、用与函数调用的“()”以及用于下标的“[]”,因此它们同操作数之间的结合也最紧密。 例如对: struct { int len; char *str; }*p; 表转载 2014-10-16 22:08:40 · 455 阅读 · 0 评论 -
#include与寻找函数的实现
大一学C++的时候,死板的记着“头文件声明函数,源文件实现函数,其余文件如果要用这个函数的话,包含头文件即可”。 虽然不知道为什么,但也没仔细想。后来仔细想想,略有所悟。 大一时间就这样写程序: fun.h [cpp] view plaincopy int myAdd(int,int); fun.cpp [c转载 2014-11-09 11:05:30 · 351 阅读 · 0 评论 -
#ifdef __cplusplus extern "C" { #endif 的解释
1、在好多程序中我们会遇到下面代码段 #ifdef __cplusplus extern "C" { #endif //c语法代码段 #ifdef __cplusplus } #endif // 首先应该知道,__cplusplus是CPP中的自定义宏,则表示这是一段cpp的代码,编译器按c++的方式编转载 2014-09-16 09:15:37 · 420 阅读 · 0 评论 -
Linux基本数据类型大小——int,char,long int,long long int
转自:http://blog.163.com/zheng_he_xiang/blog/static/186505326201110272018548/ 在Linux操作系统下使用GCC进行编程,目前一般的处理器为32位字宽,下面是/usr/include/limit.h文件对Linux下数据类型的限制及存储字节大小的说明。 /* We don't have #inclu转载 2014-09-24 22:35:59 · 604 阅读 · 0 评论 -
C语言运算符优先级 详细列表
摘自http://www.slyar.com/blog/c-operator-priority.html 恩,问这个问题的人太多了,懒得继续回答,直接贴上来自己看。。。 优先级 运算符 名称或含义 使用形式 结合方向 说明 1 [] 数组下标转载 2014-09-07 15:41:13 · 301 阅读 · 0 评论 -
GCC编译选项
-o 设定输出文件名 -c 只编译,不连接. -E 只做预编译. -pipe 在多个编译过程之间使用管道. --version 显示版本. -static 静态连接. -ansi C 模式下支持所有 ISO C90 标准的 C 程序, C++ 模式下去除对 GNU C++ 扩展的支持(GNU扩展会与 ISO C++ 冲突) -std= 确定编译语言的标准,目前只在编译转载 2014-09-07 16:11:37 · 398 阅读 · 0 评论 -
C语言字节对齐详解
摘自:http://blog.csdn.net/xuxinshao/article/details/2244277 一、什么是对齐,以及为什么要对齐: 1. 现代计算机中内存空间都是按照byte划分的,从理论上讲似乎对任何类型的变量的访问可以从任何地址开始,但实际情况是在访问特定变量的时候经常在特定的内存地址访问,这就需要各类型数据按照一定的规则在空间上排列,而不是顺序的一个接一个转载 2014-08-27 23:35:20 · 288 阅读 · 0 评论 -
在C语言中,double、long、unsigned、int、char类型数据所占字节数
和机器字长及编译器有关系: 所以,int,long int,short int的宽度都可能随编译器而异。但有几条铁定的原则(ANSI/ISO制订的): 1 sizeof(short int)<=sizeof(int) 2 sizeof(int)<=sizeof(long int) 3 short int至少应为16位(2字节) 4 long int至少应为32位。 unsigned 是转载 2014-08-27 23:22:45 · 492 阅读 · 0 评论 -
C++中extern “C”含义深层探索
1.引言 C++语言的创建初衷是“a better C”,但是这并不意味着C++中类似C语言的全局变量和函数所采用的编译和连接方式与C语言完全相同。作为一种欲与C兼容的语言,C++保留了一部分过程式语言的特点(被世人称为“不彻底地面向对象”),因而它可以定义不属于任何类的全局变量和函数。但是,C++毕竟是一种面向对象的程序设计语言,为了支持函数的重载,C++对全局函数的处理方式与C有明显转载 2014-09-13 17:27:42 · 244 阅读 · 0 评论 -
typedef定义函数类型
本文转载于:http://www.2cto.com/kf/201206/136745.html 最近在看posix实时信号时,遇到一处函数是如此定义的: [cpp] view plaincopy typedef void sigfunc_rt(int, siginfo_t *, void *); 在我常规理解里,一般定义一转载 2014-09-14 11:47:37 · 406 阅读 · 0 评论