c语言基础
qiuxueshutong
这个作者很懒,什么都没留下…
展开
-
pragma pack对齐方法
http://hi.baidu.com/zhanghuikl/blog/item/124ea7998108a9006e068c19.html 强调一点:#pragma pack(4)typedef struct{ char buf[3]; word a;}kk;#pragma pack()对齐的原则是min转载 2015-09-06 10:34:11 · 318 阅读 · 0 评论 -
sizeof为什么不能计算被动态分配的数组
sizeof为什么不能计算被动态分配的数组 (2012-08-10 11:06:34)转载▼标签: 杂谈 来源:http://topic.csdn.net/u/20080319/19/66986262-83c6-479c-8191-2b1a0b961613.html?1932183687sizeof()只是符号表,转载 2015-09-06 01:22:41 · 371 阅读 · 1 评论 -
(&a+1)
请先看以下程序:Q:若 int a[5];则 &a+1 的含义是甚么?A:&a+1 不是表示a的地址(设为Ox0010)加1,变为0x0011. 由于a为包括5个int类型的数组,则"&a+1"中的"+1"表示为相当于"1"个a大小的空间(或成为偏移),此时&a+1 表示 a[5].Q:若 int* ptr = (in转载 2015-09-06 11:28:17 · 706 阅读 · 0 评论 -
交换两个数不使用第三方变量=!!=深入理解按位异或运算符
不使用第三方变量交换两个变量的值这需要进行位操作,必较麻烦的, 在学习程序语言和进行程序设计的时候,交换两个变量的值是经常要使用的。通常我们的做法是(尤其是在学习阶段):定义一个新的变量,借助它完成交换。代码如下: int a,b; a=10; b=15; int t; t=a; a=b; b=t; 这种算法易于理解,特别适合帮助初学者了解计算机程序的特点,是赋值语句的经典转载 2015-09-11 11:44:12 · 376 阅读 · 0 评论 -
详解C中volatile关键字
volatile提醒编译器它后面所定义的变量随时都有可能改变,因此编译后的程序每次需要存储或读取这个变量的时候,都会直接从变量地址中读取数据。如果没有volatile关键字,则编译器可能优化读取和存储,可能暂时使用寄存器中的值,如果这个变量由别的程序更新了的话,将出现不一致的现象。下面举例说明。在DSP开发中,经常需要等待某个事件的触发,所以经常会写出这样的程序:short flag;vo转载 2015-09-06 14:20:00 · 189 阅读 · 0 评论 -
const与指针
const类型的指针可以指向非const类型的对象,但const类型的对象必须由const类型的指针指定:[cpp] view plaincopy// C++ 语言强制要求指向 const 对象的指针也必须具有 const 特性 const double d1 = 3.14; const double *pd1 = &d1;转载 2015-09-06 23:24:53 · 397 阅读 · 0 评论 -
引用初始化(临时对象)
关于引用的初始化有两点值得注意:(1)当初始化值是一个左值(可以取得地址)时,没有任何问题;(2)当初始化值不是一个左值时,则只能对一个const T&(常量引用)赋值。而且这个赋值是有一个过程的:首先将值隐式转换到类型T,然后将这个转换结果存放在一个临时对象里,最后用这个临时对象来初始化这个引用变量。例子:double& dr = 1; // 错误:需要左转载 2015-10-15 15:40:05 · 826 阅读 · 0 评论