
C++ 历程
文章平均质量分 55
kaffeel
这个作者很懒,什么都没留下…
展开
-
errno.h头文件介绍
<br />查看错误代码errno是调试程序的一个重要方法。当linux C API函数发生异常时,一般会将errno变量(需包含errno.h)赋一个整数值,不同的值表示不同的含义,可以通过查看该值推测出错的原因。在实际编程中用这一招解决了不少原本看来莫名其妙的问题。比较麻烦的是每次都要去linux源代码里面查找错误代码的含义,现在把它贴出来,以后需要查时就来这里看了。<br />以下来自linux 2.4.20-18的内核代码中的/usr/include/asm/errno.h<br />#ifnde原创 2010-07-28 23:03:00 · 1100 阅读 · 0 评论 -
C++的类
C++程序中类概念的目标就是为程序员提供一种建立新类型的工具,使这些新类型的使用能够像内部类型一样方便。我们设计一个新的类型,是为了给某个内部类型中没有直接对应物的概念提供一个定义。而定义一个新类型的基本思想就是将实现中那些非必然的细节(如用于存储该类型的对象所采用的数据的布局),与那些对这个类型的正确使用至关重要的性质(如能够访问其中数据的完整的函数列表)区分开来。 1、类 一个类就是一个用户定义类型。在一个类中声明的函数叫做类的成员函数,这种函数只能通过适当类型的特定变量,采用标准的结构成员访问语法原创 2010-10-20 19:59:00 · 640 阅读 · 0 评论 -
指向函数的指针
程序员对一个函数只能够做两件事:一是调用它,二是获取它的地址。通过获取一个函数的地址而得到的指针,可以在后面用于调用这个函数。 例如: void error(string s) {/* ...... */} void (*efct)(string); //指向函数的指针。 void f() { efct = &error; //efct指向函数error efct("error"); //通过函数指针调用error函数 } 在上面的例子中,编译器原创 2010-10-20 05:34:00 · 613 阅读 · 0 评论 -
指向void类型的指针
指向void的指针是个非常有趣的东西,一个指向任何对象类型的指针都可以赋值给类型为void *的变量,void *可以赋值给另一个void *,两个void *可以比较是否相等(当两个指针比较时,是看它们是否指向同一块内存地址),而且可以显示的将void *转换到另一个类型。初次之外,其他任何对void *的操作都是不安全的,因为编译器不知道它实际指向哪个对象。请看下面的实例: void f(int *pi) { void *pv =pi; //可以,从int*原创 2010-10-20 02:16:00 · 1712 阅读 · 0 评论 -
C ++ 中的函数
1、函数的声明 在C和C++的程序里,完成一项工作的一种典型的方式就是调用一个函数去做那件事。定义函数是程序员刻画怎样完成某个操作的一种方式。一个函数只有先声明后才能够调用。 在一个函数的生命中,需要给出函数的名字,这个函数返回值的类型,以及在调用这个函数的时候必须提供的参数的个数和参数类型。看如下声明: void fun(x,y) ;//这种声明是毫无意义的,因为参数类型未知。 2、函数的定义 在程序中调用某个函数,首先必须在某个地方定义(仅仅定义一次)。一个函原创 2010-10-20 05:13:00 · 1444 阅读 · 0 评论 -
关于数组和数组初始化的问题
数组的定义: float v[3]; //定义了一个数组v,它包含三个float型的元素; char *v1[3]; //定义了一个数组v1,它包含3个char *型的元素。 数组元素的个数,即数组的届必须是一个常量表达式。如 int i; int a[i];//错误,数组大小必须是常量表达式 数组初始化: int v2[] = {1,2,3,4}; char v3[] = {‘a’, 'b', 'c', 'd'}; 上述数组声明时没有给出数组大小,但是有初始化列表时,数组原创 2010-10-19 16:09:00 · 1013 阅读 · 0 评论 -
C++中,局部变量可以和全局变量重名吗?
这是一个作用域的问题。一个声明将一个名字引进一个作用域;局部变量(通常在函数中定义)的作用域是从声明的那一点开始,直到这个声明所在的块结束为止(一个块就是由{}围起来的一段代码)。全局变量(在所有函数、类、命名空间之外定义)的作用域从声明的那一点开始,直到这个声明所在的文件的结束。与全局变量重名的局部变量可以屏蔽全局变量,如果想在块内使用全局变量需要通过作用域解析运算符::引用。 见下例: //global_local.cpp #include using namespace std; i原创 2010-10-18 10:53:00 · 2822 阅读 · 0 评论 -
C / C++中的零(0)
零(0)是一个整数。由于各种标准转换,0可以被用于表示任意整数(布尔量:bool,字符型:char,整型数:int)、浮点类型、指针、还有指向成员的指针的量。0的类型将由上下文确定。 由于没有任何对象会被分配到地址0,因此,0也被当做一个指针常量,表明一个指针当时并没有指向任何对象。在C语言中非常流行的就是用NULL宏表示0指针。由于C++收紧的类型检查规则,采用普通的0表示空指针比NULL更好一些。如果你习惯了使用NULL来表示0指针,那么最好采用如下定义: const int NULL = 0原创 2010-10-18 06:30:00 · 7071 阅读 · 2 评论 -
typedef和#define的用法和区别
一、typedef的用法 1、在C/C++语言中,typedef常用来定义一个标识符及关键字的别名,它是语言编译过程的一部分,但它并不实际分配内存空间,实例像: typedef int INT; typedef char* Pchar; typedef (int*) pINT; typedef unsigned char uchar; // 将频繁使用且较长的类型定义一个别名 2、typ原创 2010-10-18 11:49:00 · 6661 阅读 · 0 评论 -
输入一个字符常量,输出此字符常量对应的整数值。
//File Name:Test.cpp #include using namespace std; int main() { char c; cout> c; cout原创 2010-10-17 18:07:00 · 2579 阅读 · 0 评论 -
C/C++程序员需要注意的11个知识点(转)
下面的这些要点是对所有的C++程序员都适用的。我之所以说它们是最重要的,是因为这些要点中提到的是你通常在C++书中或网站上无法找到的。如:指向成员的指针,这是许多资料中都不愿提到的地方,也是经常出错的地方,甚至是对一些高级的C++程序员也是如此。 这里的要点不仅仅是解释怎样写出更好的代码,更多的是展现出语言规则里面的东西。很显然,它们对C++程序员来说是永久的好资料。我相信这一篇文章会使你收获不小。 首先,我把一些由不同层次的C++程序员经常问的问题归到一起。我惊奇的发现有很多是原创 2010-10-23 23:33:00 · 1008 阅读 · 0 评论