正在阅读:C/C++编程新手错误语录(续二)C/C++编程新手错误语录(续二)

2005-09-16 10:08 出处:PConline 作者:宋宝华 责任编辑:moningfeng

前文回顾:C/C++编程新手错误语录  错误语录(续一)

(13)“整型变量仅仅意味着一个整数”

  当我们还是一个新手,看整型就是整数;

  当我们成为高手,看什么都是整型。

  整型,在所有C/C++基本数据类型中最富有艺术魅力和奇幻色彩。

  我们从某著名论坛的一篇帖子开始一窥整型的奥妙。

  问:Vxworks操作系统启动一个任务的函数是taskSpawn(char* name, int priority, int options, int stacksize, FUNCPTR function, int arg1,.. , int arg10),它只接受整型参数,我该怎么办才能给它传一个结构体(在32位PowerPC平台下)?

  答:可以传入结构体的指针,在32位PowerPC平台下,指针本质上就是一个32位整数,在函数体内将整型强制转化为结构体指针就可访问结构体的每一个元素。

  如:

//启动任务1
taskSpawn(“task1”, 180, NULL, 10000, Task1Fun, &pStructAr,0,0,0,0,0,0,0,0,0);
//task1函数
Task1Fun ( int arg1 )
{
struct_x * pStructx = (struct_x *) arg1; //将整型强制转化为结构体指针

}


  在此提出“泛整型”的概念,(unsigned)char、(unsigned)short int、(unsigned)int、(unsigned)long int等都属于这个范畴,指针必然属于“泛整型”的范围。用指针的高超境界,也为将其看做一个“泛整型”。

  看看软件的详细设计文档,其数据结构定义部分经常看到“INT8、UINT8、INT16、UINT16、INT32、UINT32、INT64、UINT64”或“BYTE、WORD、DWORD”等数据类型,它们在本质上都是(unsigned)char、(unsigned)short int、(unsigned)int、(unsigned)long int宏定义的结果,都属于“泛整型”。所以,“泛整型”的概念真实地体现在日常的软件设计当中。
键盘也能翻页,试试“← →”键

关注我们

最新资讯离线随时看 聊天吐槽赢奖品