C语言相关问题

1.预编译干的事

 文件包含:包含的.h文件找到并展开到#include 所在处   条件编译:预处理器根据#if和#ifdef等编译命令及其后的条件,将源程序中的某部分包含进来或排除在外     宏展开:将源程序文件中出现的对宏的引用展开成相应的宏定义


2.define

注意事项:define 只是简单的替换,例如 #define   area(x)   x*x

会出现多种错误。错误一  area(2+2) 为 2+2*2+2

错误二 area(2+2)/area(2+2)    2+2*2+2 / 2+2*2+2

正确写法为 #define   area(x)   ( (x)*(x) )

写swap 的define  

#define SWAP(t,x,y) \ 
{\ 
t temp = *y;\ 
*y = *x;\ 
*x = temp;\ 
}

用\换行,\的意思是說把下一行看作和這行是同一行.換行必須要反斜杠,而且\後面直接回車,不能有空格。

3.大端小端问题

32位无符号整型0x12345678从高位到低位的字节依次是0x12、0x34、0x56和0x78

Little-Endian就是低位字节排放在内存的低地址端,高位字节排放在内存的高地址端
Big-Endian就高位字节排放在内存的低地址端,低位字节排放在内存的高地址端

----------------------- 最高内存地址 0xffffffff
栈底

栈顶

-----------------------

NULL (空洞) 
-----------------------

-----------------------
未初始 化的数据
----------------------- 统称数据段
初始化的数据
-----------------------
正 文段(代码段)
----------------------- 最低内存地址 0x00000000

内存中的空间布局如上图

检查处理器  大小端

联合体union的存放顺序是所有成员都从低地址开始存放

int checkCPUendian(){
union {
unsigned int a;
unsigned char b;            
}c;
c.a = 1;
return (c.b == 1);      

}   /*return 1 : little-endian, return 0:big-endian*/


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值