博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C&C++(2) - void*在C和C++中的不同点
阅读量:4071 次
发布时间:2019-05-25

本文共 298 字,大约阅读时间需要 1 分钟。

C允许将void *指针赋值给任何类型数据的指针,无需转换,但是C++不行。这种情况常出现于C代码中使用malloc分配内存时。

 

例如,下面这段代码在C中可以运行,但是C++不能。

void* ptr;
int *i = ptr; //隐式转换void*为int*
或者:
int *j = malloc(sizeof(int) * 5); //隐式转换void*为int*
 

为了在C和C++中都能编译,需使用下面的显示转换:

void* ptr;
int *i = (int *) ptr;
int *j = (int *) malloc(sizeof(int) * 5);

更多信息可以参考:

转载地址:http://vmeji.baihongyu.com/

你可能感兴趣的文章
postgresql initdb过程中大体做了什么
查看>>
linux下的mysql源码安装
查看>>
plsql连接oracle出现ORA-12154: TNS: 无法解析指定的连接标识符
查看>>
oracle 查看库中每个表所占的空间大小
查看>>
流复制中的问题max_connection
查看>>
在mysql中使用模糊查询时,使用中文查询结果不正确问题
查看>>
redhat7修改系统语言
查看>>
启动rabbitmq:ERROR: distribution port 25672 in use on localhost (by non-Erlang process?)
查看>>
Linux下mysql8.0用rpm安装
查看>>
linux下mysql 8.0忘记密码后重置密码
查看>>
mysql学习笔记(一)
查看>>
mysql学习笔记(二)
查看>>
mysql学习笔记(三)
查看>>
mysql学习笔记(四)
查看>>
mysql学习笔记(五)
查看>>
mysql学习笔记(六)
查看>>
iOS 微信SDK1.8.6后需要UniversalLink解决方案及采坑记录
查看>>
iOS 异形tabBar, 中间item凸起
查看>>
swift中单例的创建及销毁
查看>>
Swift中NSRange和Range的转换
查看>>