C++ 指向 Void 的指针

2023-05-16

C++ 指向 Void 的指针

在 C++ 中,不能将一种数据类型的变量地址赋值给另一种数据类型的指针。

// 指针是int类型
int *ptr;

// 变量为双精度类型
double d = 9.0;

// 错误
// 无法将 double* 分配给 int*
ptr = &d;

错误发生是因为地址是double类型变量。但是,指针是int类型的。

在这种情况下,我们可以在 C++中使用指向 void的指针(void pointers)。

// 空指针
void *ptr;

double d = 9.0;

// 有效代码
ptr = &d;

void 指针是一种通用指针,当不知道指针指向的变量的数据类型时使用。

示例1(C++空指针):

#include <iostream>
using namespace std;

int main() {
    void* ptr;
    float f = 2.5f;

    // 将float地址分配给 void
    ptr = &f;

    cout << &f << endl;
    cout << ptr << endl;

    return 0;
}

结果: 

void空类型一样,void 指针不能被取消引用。

void* ptr;
float* fptr;
float f = 2.5;

// 将float地址分配给 void 指针
ptr = &f;
cout << *ptr << endl;  // 错误

// 将float地址分配给float指针
fptr = &f;
cout << *fptr << endl;   //有效

示例2(打印Void指针的内容):

要打印 void 指针的内容,使用static_cast运算符。它将指针从void*类型转换为指针存储的地址的相应数据类型:

#include <iostream>
using namespace std;

int main() {
	void* ptr;
	float f = 2.5f;

	// 将float地址分配给 void 指针
	ptr = &f;

	cout << "指针的内容为";
	//使用类型转换打印指针内容
	cout << *(static_cast<float*>(ptr));

	return 0;
}

结果:

也可以使用 C 风格的转换来打印值。

// 有效
cout << *((float*)ptr);

Note:void 指针不能用于存储带有 const 或 volatile 限定符的变量的地址。

void *ptr;
const double d = 9.0;

// 错误:从 const void* 到 void* 的无效转换
ptr = &d;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C++ 指向 Void 的指针 的相关文章

随机推荐

  • Docker随笔,从基础到入门

    实验环境 xff1a centos7 7 防火墙和selinux提前关闭 一 Docker基本概念 Docker系统有两个程序 xff1a docker服务端和docker客户端 docker服务端是一个服务进程 xff0c 管理着所有的容
  • cuda、torch、torchvision对应版本以及安装

    查找torch与torchvision对应版本 匹配情况如下 xff1a 1 在线下载 xff1a 在pytorch官网选择相应的历史版本 xff0c 使用conda或者pip安装 xff0c 使用官网的镜像下载很慢 xff0c 建议使用其
  • CUDA在VS下编程出现MSB3721错误

    CUDA在VS下编程出现MSB3721错误 一 错误示范二 解决方式 一 错误示范 我们在VS环境下进行CUDA编程的时候可能会出现如下MSB1721的错误 二 解决方式 首先确保好是在x64平台下运行 xff1a 确定无误然后如果还有问题
  • ROS:关于node启动问题

    相关代码 xff1a lt node pkg 61 34 turn on wheeltec robot 34 type 61 34 wheeltec robot node 34 name 61 34 wheeltec robot 34 ou
  • Altium Designer 的一些使用技巧(纯属爱好,不定期更新)

    目录 1 鼠标所到之处的 net 高亮显示 2 导出PCB所有图层的快捷键 3 同一个工程中不同的原理图导入到不同的PCB中 4 设置元件旋转步进角为45 5 添加LOGO的方法 6 删除已经放置的 LOGO 的方法 7 一些快捷键 1 鼠
  • C++中vector的size()类型

    span class token keyword int span span class token function main span span class token punctuation span span class token
  • 【论文笔记】FashionBERT: Text and Image Matching with Adaptive Loss for Cross-modal Retrieval

    文章来源 xff1a SIGIR 20 摘要 文章基于BERT提出了一个跨模态检索模型 xff0c 该模型并不是一个通用的检索模型 xff0c 主要用于电商领域时尚用品 xff08 Fashon xff09 检索 xff0c 作者是阿里巴巴
  • 多模态数据集预处理方法

    摘要 对文本是单个词语的一般采用词袋特征 图片可以采用多种灵活的处理方式 对文本是句子甚至是段落的则需要采用较为复杂的处理方式 xff0c 参考文献 1 2 中对Wiki和Pascal Sentence数据集的处理方式 Wiki 参考文献
  • Numpy删除指定行

    删除Numpy数组中指定的某些行 函数 xff1a np delete span class token comment 示例 span span class token keyword import span numpy span cla
  • Pytorch排查训练过程中出现nan值的位置

    span class token keyword import span torch span class token comment 正向传播 span torch span class token punctuation span au
  • JupyterLab配置远程访问

    新版本的jupyter lab似乎和之前版本的不大一样 目录 生成配置文件设置密码安装插件将 96 Test 96 环境写入jupyterlab设置远程访问其他 生成配置文件 jupyter lab generate config 设置密码
  • Anaconda多用户配置指北

    适用于实验室深度学习服务器配置 创建用户组 groupadd stu配置conda xff0c 参考这里新创建的用户加入stu组 xff0c 并指定家目录useradd d home media m g stu xpt xff0c 为不同用
  • Hexo/Github.io 配置腾讯云CDN

    前言 使用Github io搭建自己的博客时可能会遇到访问速度不理想的情况 xff0c 可以采用如下几种方案解决 xff1a 将Hexo部署到阿里云 xff08 点击查看 xff09 xff0c 直接访问阿里云 xff0c 但这种方式会暴露
  • slam定位学习笔记(七)-g2o学习

    主要学习的是这篇文章 xff0c 但大佬并没有在文章里面仔细的讲g2o xff0c 所以我在网上找了这几篇介绍g2o的文章 xff0c 讲的十分详细 xff0c 对入门十分友好 xff1a 文章一 文章二 文章三 xff0c 这三篇都是一个
  • XTDorne平台搭建无人机仿真环境时遇到的问题及解决

    XTDorne平台搭建无人机仿真环境时遇到的问题及解决 PX4安装过程中遇到的问题及解决 PX4安装过程中遇到的问题及解决 执行make px4 sitl default gazebo遇到的问题 问题1 xff1a No package 3
  • 使用Adobe软件镜像pdf页面

    直接上图 xff1a 之后确定保存路径就OK
  • docker安装指定版本(替换安装)

    1 docker安装 如果本地之前安装过docker版本 xff0c 需要先卸载 yum y remove docker docker client docker client latest docker common docker lat
  • 虚拟机下CentOS8 无法上网的问题解决办法

    1 首先切换成管理员身份 xff0c root是我之前设置的管理员账号 xff0c 可能会有不同 su root 之后输入密码即可 2 然后进入目录修改配置信息 cd etc sysconfig network scripts 使用ll命令
  • Python+pycharm安装dlib库

    目录 下载dilb库方法一 xff1a 使用pip安装dlib库方法二 xff1a 使用pycharm进行安装导入dlib库成功 下载dilb库 写在前面 xff1a 尽量要用对应Python版本的库 已经安装好Python3 6 1和py
  • C++ 指向 Void 的指针

    C 43 43 指向 Void 的指针 在 C 43 43 中 xff0c 不能将一种数据类型的变量地址赋值给另一种数据类型的指针 指针是int类型 int ptr 变量为双精度类型 double d 61 9 0 错误 无法将 doubl