摘要:free 和 delete 把指针怎么啦?别看 free 和 delete 的名字恶狠狠的(尤其是 delete),它们只是把指针所指的内存给释放掉,但并没有把指针本身干掉。用调试器跟踪示例 7-5,发现指针 p 被 free 以后其地址仍然不变(非 NULL),只是该地址对应的内存是垃圾,p 成了“野指针”。如果此时不把 p 设置为 NULL,会让人误以为 p 是个合法的指针。如果程序比较长,我们有时记不住 p 所指的内存是否已经被释放,在继续使用 p 之前,通常会用语句 if (p != NULL)进行防错处理。很遗憾,此时 if 语句起不到防错作用,因为即便 p 不是 NULL 指针,它
阅读全文
摘要:写代码的时候会碰到多维数组的内存分配和释放问题,在分配和释放过程中很容易出现错误。下面贴上一些示例代码,以供参考。如果要给二维数组(m*n)分配空间,代码可以写成下面:char **a, i;// 先分配m个指针单元,注意是指针单元// 所以每个单元的大小是sizeof(char *)a = (char **)malloc(m * sizeof(char *));// 再分配n个字符单元,// 上面的m个指针单元指向这n个字符单元首地址for(i = 0; i < m; i++)a[i] = (char *)malloc(n * sizeof(char));(注意红色部分)释放应该是:i
阅读全文
摘要:我在书本上经常碰到一些C语言的函数,它的参数类型是unsigned,而不是unsigned int、unsigned long之类的,例如:Turbo C的库函数中有这么几个函数:unsigned far setgraphbufsize(unsigned bufsize);int read(int handle, void *buf, unsigned len); int write(int handle, void *buf, unsigned len);请高手指点一下迷津!最佳答案这种情况下一般都会在前面进行宏定义的是为了版本兼容或跨平台现在的32位变成64位的机器 这样的定义有必要如#i
阅读全文
摘要:载自:http://www.cnblogs.com/goodcandle/archive/2005/11/17/278702.html目的:基本掌握了make的用法,能在Linux系统上编程。环境:Linux系统,或者有一台Linux服务器,通过终端连接。一句话:有Linux编译环境。准备:准备三个文件:file1.c, file2.c, file2.hfile1.c:#include <stdio.h>#include "file2.h"int main(){printf("print file1$$$$$$$$$$$$$$$$$$$$$$$$\n&
阅读全文
摘要:原文地址:http://hi.baidu.com/hellosim/blog/item/42e78341b40c3e8db2b7dce3.html转载请注明出处1.hello.c#include <stdio.h>int main(){ printf("Hello World!\n"); return 0;}2.Makefilehello : hello.o cc -o hello hello.ohello.o : hello.c cc -c hello.cclean : rm hello.o说明:cc -o hello hello.o前面是一个tab的空格3.
阅读全文
摘要:C语言中main(int argc, char** argv)函数接收命令行参数的方式如果主程序的名字为run.exe或run.out,则命令行传入参数的方式为:./run 1 2 3 a b c则main函数中的参数argc的值为7,即argc=7 参数argv[0]的值为run,即argv[0]="run" 参数argv[1]的值为1, 即argv[1]="1" 参数argv[2]的值为2, 即argv[2]="2" 参数argv[3]的值为3, 即argv[3]="3" 参数argv[4]的值为a, 即arg
阅读全文
摘要:菜单build——set active project configurtion中选择release,然后重新生成EXE就可以了 ,用release版的才能用,用debug版的不能用。
阅读全文
摘要:这几天在学习Linux下的C语言开发。今天要写一个取1到100之间质数的题。可是,当我用bool类型定义变量b,来标记一个数是否为质数时,编译出错。错误信息显示如下:'bool' undeclared (first use in this function) (Each undeclared identifier is reported only once for each function it appears in.) 在Google在搜了半天,也没不明白。后来,只得请求高手。得到回复,总结于下: C语言(或C++)里本身没有bool这种布尔类型。有些编译器可以识别,那也是
阅读全文
摘要:编程中,我们常用的还是10进制……必竟C/C++是高级语言。比如:int a = 100,b = 99;不过,由于数据在计算机中的表示,最终以二进制的形式存在,所以有时候使用二进制,可以更直观地解决问题。但,二进制数太长了。比如int 类型占用4个字节,32位。比如100,用int类型的二进制数表达将是:0000 0000 0000 0000 0110 0100面对这么长的数进行思考或操作,没有人会喜欢。因此,C,C++ 没有提供在代码直接写二进制数的方法。 用16进制或8进制可以解决这个问题。因为,进制越大,数的表达长度也就越短。不过,为什么偏偏是16或8进制,而不其它的,诸如9或20进制呢
阅读全文