当前位置: 首页 > news >正文

57.void指针(万能指针)

目录

一.什么是void指针

二.视频教程


一.什么是void指针

在定义变量的时候,需要用到变量的类型,变量的类型在表示在内存中的大小,而void是空,表示的是无类型。所以如果用void来定义一个变量会发生错误(无法在内存中挖一个坑)。

#include <stdio.h>int main(void)
{void a;return 0;}

所以不可以用void定义变量,但是可以使用void来定义指针。void指针我们称之为通用指针,或者万能指针,因为他可以指向任意类型的数据。换句话说,任意类型的指针都可以赋值给void指针。


#include <stdio.h>int main(void)
{int a = 1;char b = 'a';void *p = NULL;int *c = NULL;c = &a;printf("c is %p, a is %p\n",c,&a);c = &b;printf("c is %p, b is %p\n",c,&b);p = &a;printf("p is %p, a is %p\n",p,&a);p = &b;printf("p is %p, b is %p\n",p,&b);return 0;}

需要注意的是:

void类型是无类型,因为编译器很笨,不知道锁指向的数据在内存中的大小是多少,所以如果使用取值运算符对void类型指向的内存取值的话会发生错误。

//错误用例
#include <stdio.h>int main(void)
{int a = 1;void *p = NULL;p = &a;printf("*p is %d\n",*p);return 0;}

所以,如果想取出void指针指向的地址对应的值,就需要使用强制类型转换告诉编译器void指针指向的地址对应的值的类型。

//正确用例
#include <stdio.h>int main(void)
{int a = 1;void *p = NULL;p = &a;printf("*p is %d\n",*(int *)p);return 0;}

二.视频教程

57.void指针_哔哩哔哩_bilibili

http://www.lryc.cn/news/362694.html

相关文章:

  • 国科大-智能计算系统(AICS)期末试题(2024春)
  • 训练Pytorch深度学习模型出现StopIteration
  • windows上安装MongoDB,springboot整合MongoDB
  • python_04
  • 音视频视频点播
  • Git常用命令1
  • Nextjs使用教程
  • mysql的增删查改(进阶)
  • 九、从0开始卷出一个新项目之瑞萨RZN2L生产烧录固件(jflash擦写读外挂flash)
  • 安徽某高校数据挖掘作业4-5 (与一些碎碎念)
  • 基于ES安装IK分词插件
  • php项目加密源码
  • 测绘GIS和遥感领域比较好的公众号有哪些
  • 【技术实操】银河高级服务器操作系统实例分享,达梦数据库服务器 oom 问题分析
  • 通过ffmpeg 将wav格式转为mp3格式.
  • 快速上手RabbitMQ,直接上开发!
  • 如何实现单例模式及不同实现方法分析-设计模式
  • wampserver安装与汉化
  • 解决MyBatis的N+1问题
  • 12-学生们参加各科测试的次数(高频 SQL 50 题基础版)
  • 2024网络与信息安全管理员职工职业技能竞赛re0220164094
  • Elasticsearch--easy-ES框架使用,轻松操作查询Elasticsearch,简化开发
  • 【教程】如何实现WordPress网站降级(用于解决插件和主题问题)
  • 思维导图-vb.net开发带进度条的复制文件夹功能c#复制文件夹
  • Linux文本处理三剑客之awk命令
  • 公差和配合
  • AI大模型应用开发实践:5.快速入门 Assistants API
  • stack和queue的模拟实现
  • 你的手机是如何控制你的手表之广播篇
  • 深入理解并发之LongAdder、DoubleAdder的实现原理