随笔分类 -  C语言

摘要:#include<GL/glut.h>#define drawOneLine(x1,y1,x2,y2) glBegin(GL_LINES);\ glVertex2f((x1),(y1)); glVertex2f((x2),(y2)); glEnd()void init(){ glClearColor(0.0, 0.0, 0.0, 0.0); glShadeModel(GL_FLAT);}void display(void){ int i; glClear(GL_COLOR_BUFFER_BIT); glColor3f(1.0, 1.0, 1.0); glEnable(GL_LINE 阅读全文
posted @ 2011-06-03 14:50 zendPger 阅读(1825) 评论(0) 推荐(0)
摘要:2 * malloc: 3 * 根据指定的参数分配一个连续的内存块, 4 * 成功返回指针内存块的指针(void *),失败返回NULL. 5 * void *指针的由来: 6 * malloc是如何知道你请求的内存需存储的int,float还是struct呢? 7 * 它并不知道,所以malloc返回一个void *.正缘于这个原因,标准表示 8 * 一个void*指针可以转换为任何其他类型的指针. 9 * 10 * 11 */ 12 #include<stdio.h> 13 #include<stdlib.h> 14 15 #define NUM_INT 25 16 阅读全文
posted @ 2011-05-20 10:54 zendPger 阅读(211) 评论(0) 推荐(0)
摘要:BASIC解释器的任务之一就是记住程序所使用的变量的值。BASIC提供了几种不同的类型,所以每个变量的值和他的类型必须一起存储.这里有一个结构,用于保存这些信息,但效率不高(占用空间大) 1 struct Var 2 { 3 enum {INT,FLOAT,STRING} type; 4 int int_value; 5 float float_value; 6 char *string_value; 7 }; 当BASIC程序中的一个变量被创建时,解析器就创建这样的一个结构,并记录变量类型。然后根据变量的类型,把变量的值储存在这三个变量中的其中一个。改进后的结构: 1 struct Var 阅读全文
posted @ 2011-05-19 09:23 zendPger 阅读(344) 评论(0) 推荐(0)
摘要:1 struct str 2 { 3 int age; 4 struct str a; //自引用 5 };这种自引用的是非法的,因为成员a还包含令一个完整的成员,而那个成员有包含另个完整的成员。这样将无线循环下去。1 struct str 2 { 3 int age; 4 struct str *a;//自向自身的指针 5 };这里的a是一个指针而不是一个结构,编译器在确定结构的长度之前就已经知道指针的长度,所以这种自引用是合法的。 1 typedef struct 2 { 3 int age; 4 struct STR *a; 5 } STR; 6 陷阱:这个定义将是错误的.这个声明的目. 阅读全文
posted @ 2011-05-18 16:23 zendPger 阅读(172) 评论(0) 推荐(0)
摘要:一:int (*p)[10]; //声明一个指向整形数组的指针下标引用的优先级高于间接访问,但由于括号的存在,首先执行的还是间接访问。所以p是个指针,但它指向什么呢?接下来执行的是下标引用,所以p指向的是个数组。int martix[10[20];p = maxtix; //使p指向maxtix第一行.注意:二维数组的数组名是一个指向数组的指针二:int *p[10] ;//声明一个指针数组。下标引用高于间接访问(*),所以首先执行下标引用。因此p是某种类型的数组。在取得一个元素之后,随即执行的是间接访问操作,获得一个整形值。那么p到底是什么东西,对数组的一个元素执行*操作后,获得的是一个整形 阅读全文
posted @ 2011-05-17 16:01 zendPger 阅读(364) 评论(0) 推荐(0)
摘要:c中多维数组的储存顺序是根据右边下标率先变化的原则确定的. 阅读全文
posted @ 2011-05-17 15:43 zendPger 阅读(273) 评论(0) 推荐(0)
摘要:1 #include<stdio.h> 2 #include<stdlib.h> 3 4 5 int main() 6 { 7 char ar0[] = {'n','a','m','e','i','s','l'}; //初始化字符数组方式1 8 char ar1[] ="nameisl"; //初始化字符数组方式2.这里是一个初始化列表,不是字符串常量,以后可以修改其值 9 char *ar2 = "NAMEISL"; 阅读全文
posted @ 2011-05-17 13:40 zendPger 阅读(1936) 评论(1) 推荐(1)
摘要:c中所有传递给函数的参数都是通过传值进行的。函数获得的是实参的一份拷贝。指针,数组也如此。 1 #include<stdio.h> 2 3 void show_addr(int *p) 4 { 5 printf("p2_addr:%x\tp2_content:%x\n",&p,p); 6 } 7 8 int main() 9 { 10 int *pt, i = 2; 11 pt = &i; 12 show_addr(pt); 13 printf("p1_addr:%x\tp1_content:%x\n",&pt,pt) 阅读全文
posted @ 2011-05-17 11:31 zendPger 阅读(169) 评论(0) 推荐(0)
摘要:数组名是一个指针常量.不可以进行++,--,>,>=等操作. 阅读全文
posted @ 2011-05-16 18:06 zendPger 阅读(167) 评论(0) 推荐(0)