void指针(void *)是什么?如何使用它
void指针(void *)是什么?如何使用它
void 指针的使用规则
1. void 指针可以指向任意类型的数据,就是说可以用任意类型的指针对 void 指针赋值。例如:
int *a; void *p; p=a;
如果要将 void 指针 p 赋给其他类型的指针,则需要强制类型转换,就本例而言:a=(int *)p。在内存的分配中我们可以见到 void 指针使用:内存分配函数 malloc 函数返回的指针就是 void * 型,用户在使用这个指针的时候,要进行强制类型转换,也就是显式说明该指针指向的内存中是存放的什么类型的数据 (int *)malloc(1024) 表示强制规定 malloc 返回的 void* 指针指向的内存中存放的是一个个的 int 型数据。
2. 在 ANSI C 标准中,不允许对 void 指针进行一些算术运算如 p++ 或 p+=1 等,因为既然 void 是无类型,那么每次算术运算我们就不知道该操作几个字节,例如 char 型操作 sizeof(char) 字节,而 int 则要操作 sizeof(int) 字节。而在 GNU 中则允许,因为在默认情况下,GNU 认为 void * 和 char * 一样,既然是确定的,当然可以进行一些算术操作,在这里sizeof(*p)==sizeof(char)。
最新文章
- 信雅达面试
- iOS annotation
- 林达华博士对数学的见解
- snmp编程
- 关于platform
- AndroidLRUCache原理
- MSYS+MinGW64环境的搭建
- 数字集成电路(中)
- (笔记)yolov5自适应anchors
- MongoDB勒索事件中,DBA们到底该学到什么?
- java鬼混笔记:springboot 5、springboot的Scheduled定时器:fixedDelay和fixedRate区别
- IDEA将项目打包成jar包
- 常用的Linux终端命令盘点
- MFC 的CList,CPtrList,CObList,CStringList 的用法之CList
- 第九届 蓝桥杯 决赛 交换次数
- php实现远程下载文件到本地服务器指定目录
- Qt数据库:(三)利用QSqlQuery类执行SQL语句(一)