C/C++
Andrew659
这个作者很懒,什么都没留下…
展开
-
参数传递中某些情况下数组和变量的不同
引用传递和值传递一直是个令人头疼的问题。下面的这个例子是一个新的佐证,很容易理解。#include #include using namespace std;void setValue(int a){ a=5;}void setValue2(int a[]){ a[0]=5;}int main(int argc, char *a原创 2009-11-26 05:59:00 · 709 阅读 · 0 评论 -
undefined reference to `exp'
<br />明明include math.h了,而且也用了一个小例子试验了下exp函数是可以用的.<br />但是一个大的程序就总是编译不过 undefined reference to `exp'<br />后来google了下, gcc -o main main.c -lm ((-lm tells the linker to link with /usr/lib/libm.so))<br />搞定原创 2011-04-15 23:10:00 · 7912 阅读 · 0 评论 -
为什么要写makefile?
<br />很多的年轻程序员从学programming开始接触的便是功能强大的IDE, 只要写好header files 和 source files, 一键就能生成可执行文件. 但是作为一个professional, makefile的概念不能不清楚, 所以我就动手探究了下为什么我们要写makefile. 至于怎么写好makefile,请参考http://bbs.chinaunix.net/viewthread.php?tid=408225.<br /> <br />我们使用4个文件来说明这个问题<b原创 2011-04-07 16:14:00 · 3576 阅读 · 0 评论 -
declare variables inside switch
<br />when declare varibles or objects inside a switch statement, brackets are needed.<br />example<br />switch(a){ case 1: { char* filename="data.txt"; break; } case 2: {...} default:break;}<br />otherwise you'll get "crosses initi原创 2010-11-25 22:39:00 · 678 阅读 · 0 评论 -
Eclipse, Dev C++不能使用count做为全局变量
<br />偶尔使用eclipse run C++, 学生写的一个简单的程序,编译器居然不认识全局变量count, 试了下DEV也不行, 只有Visual Studio可以.<br />原来Eclipse中是不能用count作为全局变量的,好像是关键字.原创 2010-11-04 23:35:00 · 1913 阅读 · 0 评论 -
cin深入解析
很多初学者都认为cin函数是一个很简单的函数,其实不然!cin函数有很多需要了解的知识(比如:cin的返回值是什么,cin提供了哪些成员函数且分别是什么作用,如cin.clear(), cin.ignore(), cin.fail(), cin.good()等等),如果没有很好的掌握,在使用的时候很可能会出问题却不知其原因!而且很多人也确确实实遇到过不少问题,以下是几个简单的例子:程序1:#include using namespace std;int main(){转载 2010-09-14 18:47:00 · 1019 阅读 · 0 评论 -
C++操作符重载
<br />C++编程语言发展至今已经成为了开发领域中一个重要的应用语言。其中有很多比较高深的内容还值得我们在实践中去不断的探索。在这里我们就先从对C++操作符重载的应用方式的了解来进一步解读这一编程语言。C++指针与引用之间有何不同之处C++文件流操作具体实现方法探讨C++ enum枚举代码示例剖析C++动态数组应用方式探讨各种C++继承方式范例分析<br />一、为什么使用C++操作符重载?<br />对于系统的所有操作符,一般情况下,只支持基本数据类型和标准库中提供的class,对于用户自转载 2010-07-28 21:05:00 · 958 阅读 · 0 评论 -
让C++变得更加容易:偶尔可以工作的程序(未定义行为)
<br />《Dr.Dobb's 软件研发》第5期<br />Andrew Koenig Barbara E. Moo<br />在C++编程中避免未定义行为是至关重要的。本文的两位作者向我们展示了一些无需牢记整个C++标准就可以使用的方法。 <br />引介 <br />我们常常会在新闻组里看到这样的C++提问:“下面的语句具有良好定义的行为吗?”或者更为天真(也更为直率)地问:“以下语句并不按预期的那样运行,我的编译器出了啥毛病?” <br />有时答案是“给定的语句具有转载 2010-07-18 20:42:00 · 1154 阅读 · 0 评论 -
printf函数行为探究
<br />C编译器对于一些行为并没有统一的规定,而且编程者不能祈求编译器永远按照你的想法理解程序,所以在写高质量代码的时候,有疑虑的表达最好换一种有把握的做法。<br />在编程的时候,遇到一条语句 printf("%d%d",a,a++);变量a的初始值为2,该语句打印出3,2着实让我费解了半天。<br />后来通过实验,理解了gcc下是怎么运作的(其他的编译器其实没有必要去深究了,写代码风格倒是要锤炼的)<br />printf从右向左扫描,然后从左向右输出!过程可以理解如下<br />print原创 2010-07-18 21:26:00 · 732 阅读 · 0 评论 -
malloc函数和new操作(内含malloc新旧标准对比)
malloc函数和new操作均可以开辟一定的内存空间用以存储变量。但两者有以下几个不同:1. malloc函数需要指定开辟的字节数,而new操作自动开辟相应大小的内存空间。2. new操作返回指定类型的指针,而malloc函数返回void*,需要强制转换。3. 回收内存时,一般malloc函数对应free函数,new操作对应delete操作,否则会引起memory leaking。例如:例一 int *p=NULL; p=new int; //p指向一个int型变量,如果某系统中size原创 2010-07-18 14:19:00 · 982 阅读 · 0 评论 -
*a++和(*a)++区别 注意!!!
<br />我们通常定义一个整型指针变量a,那么*a是a指向的整型变量的值<br />如果要使该值自增,单独写一条语句:*a++;将会带来问题,因为优先级问题<br />所以要写成(*a)++; 或者++*a;因为单条语句中a++和++a并无区别。原创 2010-07-18 14:24:00 · 8484 阅读 · 0 评论 -
静态链接库和动态链接库
C源程序到最后的可执行代码需要经过:预处理,汇编,编译,链接过程,链接的过程就是把编译好的目标代码(.o文件)和其他目标代码(比如几个目标文件链接成一个可执行程序)还有库文件链接起来组成一个可执行程序。通常我们写C程序的第一句代码都会是#include,用以包含进来标准输入输出的头文件,头文件用以定义一些常量和声明一些函数,最简单的程序莫过于。#includeint main(){ printf("hello world!/n"); exit(0);}那么我们在编译的时候原创 2010-07-11 11:41:00 · 4034 阅读 · 0 评论 -
C++类中静态变量
下面是对类中static变量的一点讲解 =============================================== 静态数据成员的使用方法和注意事项如下: 1、静态数据成员在定义或说明时前面加关键字static。 2、静态成员初始化与一般数据成员初始化不同。静态数据成员初始化的格式如下:原创 2010-05-14 20:41:00 · 11726 阅读 · 1 评论 -
creating and destroying objects in C++
之前只知道C++中创建对象有两种方式:1. Obj* o=new Obj();先定义一个对象指针,然偶用new给对象分配空间,此时对象必须显示地用delete使其消亡,否则长占堆区(new和delete配对 malloc和free配对)用o->可以访问成员2. Obj o;此时已经按照默认的构造函数创建了一个对象,用o.可以访问成员如果有有参的构造函数,可以用Obj o原创 2010-01-07 22:51:00 · 633 阅读 · 0 评论 -
copy constructor
构造函数和析构函数都没返回值(注意不是返回值为void,而是没有)构造函数的重载1.应该注意的是,构造函数是public的(因为他是在创建对象时调用的,如果不是public,在类外的对象声明就相当于访问了类的私有(private)或者保护(protected),是不允许的)2。构造函数没有返回类型(也不能写void) 构造函数、析构函数、拷贝构造函数,赋值函数都可以被c++编转载 2010-02-26 11:55:00 · 659 阅读 · 0 评论 -
C++引用类型
先看一个简单的程序,说明引用的基本知识#include #include using namespace std;int main(void){ int* p; int a=5; int b=6; int& c=a;//b是a的引用,当定义b这个引用的时候a必须是个live object p=&a; //p=原创 2010-02-24 22:04:00 · 1447 阅读 · 1 评论 -
构造类型之结构体
typedef关键字用于给已有的数据类型指定一个新的名称。实际上,typedef创建一个同义词,例如typedef int integer;将integer作为int的同义词,你就可以如下定义整形变量integer count;注意:typedef并不创建新的数据类型,只是让你能够将不同的名称用于一个预定义的数据类型,最常用于聚集数据类型(structure) 结构定义的3种范例1. st原创 2010-02-22 21:59:00 · 854 阅读 · 0 评论 -
Programs as Data: Function Pointers
<br />Forwarded from: http://www.cprogramming.com/tutorial/function-pointers.html<br /> <br />A function pointer is a variable that stores the address of a function thatcan later be called through that function pointer. This is useful becausefunctions转载 2011-04-19 21:39:00 · 814 阅读 · 0 评论