c/c++void及void指针类型
来源:优易学  2010-1-14 10:53:57   【优易学:中国教育考试门户网】   资料下载   IT书店

 

  规则五void不能代表一个真实的变量

  下面代码都企图让void代表一个真实的变量,因此都是错误的代码:

  void a; //错误

  function(void a); //错误

  void体现了一种抽象,这个世界上的变量都是“有类型”的,譬如一个人不是男人就是女人(还有人妖?)。

  void的出现只是为了一种抽象的需要,如果你正确地理解了面向对象中“抽象基类”的概念,也很容易理解void数据类型。正如不能给抽象基类定义一个实例,我们也不能定义一个void(让我们类比的称void为“抽象数据类型”)变量。

  4.总结小小的void蕴藏着很丰富的设计哲学,作为一名程序设计人员,对问题进行深一个层次的思考必然使我们受益匪浅。

  不论什么类型的指针(void*, char*, int*, float*...) 默认初始值都是0xCCCCCCCC//这个应该各个编译器都不同的,这个针对vc6

  #include<iostream.h> #include <memory.h> //#include   <string.h>

  void main()

  {

  void *p1;

  int a = 10;

  int *p2 = &a;

  cout << p1 << endl;

  cout << (int)*p2 << endl;

  p1 = p2;

  cout << *(int*)p1 << endl;//!!!!!!!   用空类型操作输出值!

  cout << (int)*p2 << endl;

  }

  /*输出:

  0xCCCCCCCC

  10

  10

  10

  */

  在声明同时赋值NULL,在delete后立即设置为NULL。

  在debug版本下指针默认初始值为0xCCCCCCCC,在Release版本下初始值为0x0000000A,(在我电脑上VC6.0)。对于指针如果暂时没有合适的初始化值,就应该把它置为NULL(0)。

  对于好的编程习惯来说,declare一个指针,则初始化为NULL,如果是类成员 则在构造函数中initialize,当对指针使用delete时候,则置它为NULL.

  0xCCCCCCCC只是在debug状态下VC生成的未定义过的指针值,用来提示这个指针是未被初始化的,在release状态下不会等于这个值(除非巧合)。对于指针如果暂时没有合适的初始化值,就应该把它置为NULL(0)。

上一页  [1] [2] [3] [4] 

责任编辑:cyth

文章搜索:
 相关文章
热点资讯
资讯快报
热门课程培训