03 2011 档案

指针类型对指针做差的影响
摘要:之前知道指针变量其实存放的就是数据在存储空间存储的地址,而地址在32位机上往往都是32位数据,感觉都是一样的,与所指向的数据的类型关系不大。所以一直觉得指针类型的唯一作用,就是提高程序可读性,防止我们滥用指针。至于指针做差的返回值应该就是地址的差值。但是最近有一次对指针进行做差的时候,无意中发现其实并没有这么简单。源代码如下:#include<stdio.h>int main(){ int *p1 = (int *)0; int *p2 = (int *)4; int result; printf("p1 = %d, p2 = %d\n... 阅读全文

posted @ 2011-03-19 20:11 守夜者 阅读(1157) 评论(6) 推荐(0)

它被定义了,但它却被定义为未定义——有趣的宏定义
摘要:前些日子为了弄清楚宏定义写了个小程序,忽然发现将标识符定义为空和将标识符定义为未定义完全是两码事……然后发现原来宏定义中还有一种状态叫“未定义”。下面就是那个小程序以及简单的分析,然后通过这个程序可以充分体验一下这个“未定义”的状态,体验一下什么叫“它被定义了,但它却被定义为未定义”。程序源码:#include<stdio.h>int main(){#if (A == B) printf("define A = B\n");#elif (A == C) printf("define A = C\n");#else printf("n 阅读全文

posted @ 2011-03-13 11:09 守夜者 阅读(3069) 评论(2) 推荐(0)

轻松掌握c语言中的sizeof
摘要:网上有很多文章已经详细讲述过sizeof的用法,但是我觉得其实sizeof并没有那么复杂。在这儿简单地再总结一下。1,是什么? sizeof其实就是一个运算符,和那些+,-一样的东西,在程序编译的时候进行解析转换。虽然我们经常见到sizeof后面跟着个小括号,长得和函数差不多,但它和函数完全是两码事。2,有什么用? sizeof其实就是用于告诉我们编译器在为某一特定数据或者某种数据类型的数据在存储空间中开辟空间时,开辟的空间大小,以字节为单位。3,怎么用? sizeof(类型),或者sizeof(变量)都可以,得到的就是类型或者变量的存储空间。当对变量用的时候,也可以没有括号,直接 size. 阅读全文

posted @ 2011-03-13 09:34 守夜者 阅读(4227) 评论(0) 推荐(1)

导航