摘要:typedef声明,简称typedef,为现有类型创建一个新的名字。比如人们常常使用typedef来编写更美观和可读的代码。所谓美观,意指typedef能隐藏笨拙的语法构造以及平台相关的数据类型,从而增强可移植性和以及未来的可维护性1.定义易于记忆的类型名例如:typedef int size;此声明定义了一个int的同义字,名字为size。注意typedef并不创建新的类型。它仅仅为现有类型添加一个同义字。你可以在任何需要int的上下文中使用size:void measure(size * psz);size array[4];定义一个typedef,每当要用到相同类型和大小的数组时,可以这
阅读全文
摘要:har* p = malloc(1024);char* q = realloc(p,2048);现在的问题是我们应该如何处理指针 p。 刚开始按照我最直观的理解,如果就是直接将 p = NULL;。 到最后只需要释放 q的空间就可以了。因为最近在做个封装。结果在做单元测试的时候发现。有时候我在 free(q); 的时候会出错。这样我就郁闷了。后来仔细一跟踪,发现 realloc 完以后 q 和 p 的指针地址是一样。不过有时候又不一样。仔细查了下资料。得到如下信息: 1.如果 当前连续内存块足够 realloc 的话,只是将p所指向的空间扩大,并返回p的指针地址。 这个时候 q 和 p 指向的
阅读全文
摘要:首先介绍一下 异或^与1 异或 极为取反与0 异或 不改变若想让一个字节中的某一位取反如:unsigned char i; i=0x00; i^=0x01; 则此时i=0x01; 这个时候第零位取反了;如果我们想要令其中的某一位为0那么 unsigned char i; i=00110011; 我们要让第三位取1,则需要 i |=00001000; 第三位取0则为: i &=11110111;
阅读全文
摘要:有些程序在调试、兼容性、平台移植等情况下可能想要通过简单地设置一些参数就生成一个不同的软件,这当然可以通过变量设置,把所有可能用到的代码都写进去,在初始化时配置,但在不同的情况下可能只用到一部分代码,就没必要把所有的代码都写进去,就可以用条件编译,通过预编译指令设置编译条件,在不同的需要时编译不同的...
阅读全文