随笔分类 -  C

摘要:常见此类问题的原因如下(引)错误:test.c:22: error: conflicting types for 'urlencode'test.c:18: error: previous implicit declaration of 'urlencode' was here原因一:原来是因为没有先做函数声明,而函数位于main()之后。在main函数前声明了函数原型后,一切ok.原因二:头文件的被循环引用,在引用时考虑清楚包含顺序原因三:头文件声明和定义参数稍有不同例:头文件中声明 voidHanlder(const char * buf);在定义时写作 v 阅读全文
posted @ 2012-11-13 22:43 Moonwolf 阅读(2111) 评论(0) 推荐(1)
摘要:1. static 变量 静态变量的类型 说明符是static。 静态变量当然是属于静态存储方式,但是属于静态存储方式的量不一定就是静态变量。 例如外部变量虽属于静态 存储方式,但不一定是静态变量,必须由 static加以定义后才能成为静态外部变量,或称静态全局变量。 2. 静态局部变量 静态局部变量属于静态存储方式,它具有以下特点: (1)静态局部变量在函数内定义 它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。 (2)允许对构造类静态局部量赋初值 例如数组,若未赋以初值,则由系统自动赋以... 阅读全文
posted @ 2012-10-06 18:20 Moonwolf 阅读(218) 评论(0) 推荐(0)
摘要:代码中的int * i就是我们关注的焦点。它是一个指向int指针。也就是说:i指向一个内存地址,从这个地址开始存储了一个数据。int * i中的int标明应该使用int类型(长度为sizeof(int)个字节)来从这个地址取数据,也就是说要一次取sizeof(int)个byte的数据来拼成最后的结果。最后一个例子也证明了这一点:如果我们强制用unsigned char的大小的数据类型来对这个地址操作,就只能取出数据的一部分。反过来说,如果用较大数据类型来取实际存储较小数据类型的数据,就有可能越界操作内存,取回一些杂乱的内容或导致系统崩溃。int b[]这个数组,标明有一组数,放在以&b 阅读全文
posted @ 2012-05-27 22:11 Moonwolf 阅读(332) 评论(0) 推荐(0)
摘要:在ANSI C中,对文件的操作分为两种方式,即流式文件操作和I/O文件操作,下面就分别介绍之。一、流式文件操作 这种方式的文件操作有一个重要的结构FILE,FILE在stdio.h中定义如下:typedef struct {int level; /* fill/empty level of buffer */unsigned flags; /* File status flags */char fd; /* File descriptor */unsigned char hold; /* Ungetc char if no buffer */int bsize; /* Buffer size. 阅读全文
posted @ 2012-05-27 16:51 Moonwolf 阅读(129) 评论(0) 推荐(0)
摘要:一、用户空间内存分配:malloc、calloc、realloc1、malloc原型如下:extern void *malloc(unsigned int num_bytes);功能:分配长度为num_bytes字节块。工作机制:malloc函数的实质体现在,它有一个将可用的内存块连接为一个长长的列表的所谓空闲链表。调用malloc函数时,它沿连接表寻找一个大到足以满足用户请求所需要的内存块。然后,将该内存块一分为二(一块的大小与用户请求的大小相等,另一块的大小就是剩下的字节)。接下来,将分配给用户的那块内存传给用户,并将剩下的那块(如果有的话)返回到连接表上。2、calloc原型如下:voi 阅读全文
posted @ 2012-05-27 13:53 Moonwolf 阅读(316) 评论(0) 推荐(0)
摘要:李家凯老师结合教学案例和一些网上的资料整理了如下一文一、预备知识—程序的内存分配由C/C++编译的程序占用的内存分为以下几个部分1、栈区(stack):由编译器自动分配释放,存放函数的参数值,局部变量等。其操作方式类似于数据结构中的栈。2、堆区(heap):一般由程序员分配释放(malloc/free、new/delete),若程序员不释放,程序结束时可能由操作系统回收。注意它与数据结构中的堆是两回事,分配方式倒是类似于链表。3、全局区(static):全局变量和静态变量的存储是放在一块的,初始化的全局变量和静态变量在一块区域,未初始化的全局变量和未初始化的静态变量在相邻的另一块区域,程序结束 阅读全文
posted @ 2012-05-27 13:51 Moonwolf 阅读(140) 评论(0) 推荐(0)
摘要:C语言文件操作函数大全clearerr(清除文件流的错误旗标)相关函数 feof表头文件 #include<stdio.h>定义函数 void clearerr(FILE * stream);函数说明 clearerr()清除参数stream指定的文件流所使用的错误旗标。返回值 fclose(关闭文件)相关函数 close,fflush,fopen,setbuf表头文件 #include<stdio.h>定义函数 int fclose(FILE * stream);函数说明 fclose()用来关闭先前fopen()打开的文件。此动作会让缓冲区内的数据写入文件中,并释放 阅读全文
posted @ 2012-05-07 19:38 Moonwolf 阅读(115) 评论(0) 推荐(0)
摘要:指针是C/C++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师也错误得给学生讲解:"数组名就是指针"。想必这种误解的根源在于国内某著名的C程序设计教程。如果这篇文章能够纠正许多中国程序员对数组名和指针的误解,笔者就不甚欣慰了。神奇的数组名 请看程序(本文程序在WIN32平台下编译):1. #include <iostream.h>2. int main(int argc, char* argv[])3. {4. char str[10];5. char *pStr = str;6 阅读全文
posted @ 2011-02-27 13:11 Moonwolf 阅读(106) 评论(0) 推荐(0)