摘要: 下面的六个程序片段主要完成这些事情:输出Hello, World混乱C语言的源代码下面的所有程序都可以在GCC下编译通过,只有最后一个需要动用C++的编译器g++才能编程通过。hello1.c01 #define _________ }02 #define ________ putchar03 #define _______ main04 #define _(a) ________(a);05 #define ______ _______(){06 #define __ ______ _(0x48)_(0x65)_(0x6C)_(0x6C)07 #define ___ _(0x6F)_(0x2 阅读全文
posted @ 2013-04-20 18:57 米深 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 1.编辑器设计者的金科玉律:效率(几乎)就是一切2.阅读ANSIC标准 , 寻找乐趣和裨益具体的ANSI C标准的规定我都不说了,从中看出 char * 类型是可以作为参数专递的,但是char** 是不行的,所以我们传递多维数组的时候要表明确前n-1维的下标3.容易混乱的const[cpp]int main(int argc, char* argv[]) { //定义基本类型的const变量,const 位置在哪儿都可以 const int x = 2,y = 3; //两个常量 //定义一个非const变量 int z = 3; //一个普通变量 //定义一个指向常的... 阅读全文
posted @ 2013-04-20 17:00 米深 阅读(139) 评论(0) 推荐(0) 编辑
摘要: nul 和 null要看编译器,不同的编译器有所区别。一般而言 null(NULL)是宏定义 #define NULL ((void *)0),是一个指向地址0的指针,也就是说它是一个值为0的指针类型的数,这个宏是在头文件stddef.h文件里面定义的,你可以用#include <stddef.h>或者#include <stdlib.h>来使用它;nul(NUL)一般而言是指ASC码'\0'字符,十六进制值为0x00,这个在C语言的头文件里面没有被定义,你可以自己定义它 #define NUL '\0',一个字符串的最后一个字符就是’\ 阅读全文
posted @ 2013-04-20 16:53 米深 阅读(1046) 评论(0) 推荐(0) 编辑
摘要: volatile 影响编译器编译的结果,指出,volatile 变量是随时可能发生变化的,与volatile变量有关的运算,不要进行编译优化,以免出错,(VC++ 在产生release版可执行码时会进行编译优化,加volatile关键字的变量有关的运算,将不进行编译优化。)。例如:volatile int i=10;int j = i;...int k = i;volatile 告诉编译器i是随时可能发生变化的,每次使用它的时候必须从i的地址中读取,因而编译器生成的可执行码会重新从i的地址读取数据放在k中。而优化做法是,由于编译器发现两次从i读数据的代码之间的代码没有对i进行过操作,它会自动把 阅读全文
posted @ 2013-04-20 14:12 米深 阅读(331) 评论(0) 推荐(0) 编辑