正因为各种指针类型在本质上都是“泛整型”,因此它们可以互相转化: int a, b; 等价于: int a, b; 从来没有人会用memset( (char*) &a, (char*) &b, sizeof(int) )来代替a = b,这里只是为了说明问题。下面的代码则经常用到: int *p = (int *) malloc(100*sizeof(int)); 我们看memset的函数原型为: void * memset ( void * buffer, int c, size_t num ); 实际上它接受的第一个参数是无类型指针,在memset函数体内,其它任意类型的指针都向void *转化了。类似的内存操作函数memcpy所接受的源和目的内存地址也是无类型指针。 char *转化为int *后的值虽然不变(还是那个地址),但是其++、--等操作的含义却发生了变化,这也是要注意的。 char *p; 与 char *p; 的结果是不一样的,前者的p值加了1,而后者的则增加了sizeof(int)。 下面来剥Windows程序设计中消息传递函数两个参数的皮,看看它们究竟是什么: typedef UINT WPARAM; 原来,WPARAM和LPARAM其实都属于“泛整型”,所以不要报怨消息处理函数只能接受“泛整型”。实际上,从指针的角度上来讲,在C/C++中,可以获得任何类型实例(变量、结构、类)的指针,所以Windows的消息处理函数实际上可以接受一切类型的参数。 惊天动地一句话:“泛整型”可表征一切。 |

键盘也能翻页,试试“← →”键
相关文章
visual c++ 6.0怎么编译运行?visual c++ 6.0编译运行教程
visual c++ 6.0怎么用?visual c++ 6.0使用方法
vs2015中文旗舰版编写c++程序的操作教程
vc++6.0(Visual C++)的使用操作步骤
visual c++ 6.0怎么显示行号
visual c++ 2008运行库怎么装在c盘 visual c++ 2008运行库装在c盘的方法
microsoft visual c++ 2008怎么安装 microsoft visual c++ 2008安装方法
Visual Studio 2010编写C++程序的具体步骤
vc++6.0Visual C++进行安装的操作过程讲解
Notepad++配置C++环境的操作步骤