void与void 指针深度理解
来源:互联网 发布:天普大学 知乎 编辑:程序博客网 时间:2024/05/21 06:52
1.void与void指针
void 是“无类型”;void * 是“无类型指针”,是可以指向任何数据类型的指针,当然必须理解什么是指针。
2.void的使用
①对函数返回值进行限制,函数不需要返回值时,void修饰。如,void funcName(int numA,int numB);
如果函数返回值处什么也没写,如funcName(int a,int b),此时默认返回值为整型,而不是void,此处易错。
引申:编程规范,返回值类型要严格指定,空写void,不然写上对应类型,这是好的编程习惯。
②对函数参数列表进行限制,函数不允许接收参数时,必须用void修饰。如,int funcName(void);
3.void *的使用
①void指针可以指向任何数据类型指针;任何数据类型指针都可给void指针赋值,但void指针类型不能赋给具体类型指针。两者之间的关系就像是Java中父类与子类的关系,子类对象可赋值给父类变量,但是父类对象不能赋值给子类变量。再如,可以把苹果叫水果,但不能把水果叫苹果。
int *pInt;void *pVoid;pVoid=pInt;pInt=pVoid;//此处编译报错当然,上述问题可以通过强制类型转换来解决,pInt=(int *)pVoid。
②由于void指针既可指向任何数据类型,任何数据类型都可赋值给void指针,故可用void *指针类型作为形参,这样此函数可以接收任何类型参数。
如:void *memset(void *s, char ch, size_t n);
③在ANSIC标准中,不允许对void指针进行算术运算如pVoid++或pVoid+=1等,ANSI标准之所以这样认定,是因为它坚持:进行算法操作的指针必须是确定知道其指向数据类型大小的;但GNU中允许,因为在缺省情况下,GNU认为void *与char *一样,sizeof(*pVoid )== sizeof( char)。虽然GNU语法更开放,但是编程时还是要按ANSI的标准来。写到这儿,欢迎大家留言讨论。
- void与void 指针深度理解
- void与void*指针
- void变量 与 Void 指针
- Void 空指针理解
- void *指针理解
- void及void指针理解使用
- Void与NULL指针
- void类型与void类型指针
- 深入理解void指针( 转载 )
- 空指针与void *指针
- C++-指针与void*指针
- void指针与NULL指针
- void及void指针
- void和void指针
- void 指针 void*
- void及void指针
- void * (void 指针)
- void和void指针
- android中点击空白处隐藏软键盘
- 基数排序
- Visual Studio 移除 cocos2d-x 模版
- hdu4622 后缀自动机 模板
- java中自动注释的相关知识
- void与void 指针深度理解
- Centos搭建PHP5.3.8+Nginx1.0.9+Mysql5.5.17
- 版本控制的概念、分布式、Git 简介及其工作流程
- 第4天 流程控制
- matlab杂记
- 中断处理函数用spinlock注意点
- 完整的HTTP通信步骤
- No result defined for action …… and result ……
- Eclipse在创建类时出现create file failed MALFORMED且用点提示无效