void指针的用法

2023-11-11

指针有两个属性:指向变量/对象的地址长度
但是指针只存储地址,长度则取决于指针的类型
编译器根据指针的类型从指针指向的地址向后寻址
指针类型不同则寻址范围也不同,比如:
int*从指定地址向后寻找4字节作为变量的存储单元
double*从指定地址向后寻找8字节作为变量的存储单元

1.void指针是一种特别的指针
   void *vp
   //说它特别是因为它没有类型
   //或者说这个类型不能判断出指向对象的长度

2.任何指针都可以赋值给void指针
   type *p;
   vp=p;
   //不需转换
   //只获得变量/对象地址而不获得大小

3.void指针赋值给其他类型的指针时都要进行转换
   type *p=(type*)vp;
   //转换类型也就是获得指向变量/对象大小
转:http://icoding.spaces.live.com/blog/cns!209684E38D520BA6!130.entry

4.void指针不能复引用
   *vp//错误
   因为void指针只知道,指向变量/对象的起始地址
   而不知道指向变量/对象的大小(占几个字节)所以无法正确引用

5.void指针不能参与指针运算,除非进行转换
   (type*)vp++;
   //vp==vp+sizeof(type)



#include<iostream>
#include<stdlib.h>
#include<string>
using namespace std;
typedef struct tag_st
{
char id[10];
float fa[2];
}ST;
//我在程序里面这样使用的
int main()
{
ST * P=(ST *)malloc(sizeof(ST));
strcpy(P->id,"hello!");
P->fa[0]=1.1;
P->fa[1]=2.1;

ST * Q=(ST *)malloc(sizeof(ST));
strcpy(Q->id,"world!");
Q->fa[0]=3.1;
Q->fa[1]=4.1;
void ** plink=(void **)P;
*((ST *)(plink)) = * Q; //plink要先强制转换一下,目的是为了让它先知道要覆盖的大小.
                         //P的内容竟然给Q的内容覆盖掉了.
cout<<P->id<<" "<<P->fa[0]<<" "<<P->fa[1]<<endl;
return 0;
}

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

void指针的用法 的相关文章

  • C++泛型编程

    C 泛型编程 1 泛型编程 1 1 模板 1 2 函数模板 1 2 1 语法 1 2 2 使用函数模板方式 1 2 3 普通函数和函数模板的区别 1 2 4 普通函数与函数模板的调用规则 1 2 5 模板的局限性 1 3 类模板 1 3 1
  • 数字化转型需要解决的五大问题

    更多专业文档请访问 www itilzj com 数字化 数字中国被列为十四五规划的核心之一 数字经济席卷各行各业 新一轮的商业马拉松枪声已经响起 无形的革新重塑着商业大环境 也赋予了我们丰富的想象空间 数字化转型需要解决的问题包括 1 解
  • 太牛逼了!从Python入门到入魔

    总被读者问到 我看完了python入门的书 后面就不知道要学什么了 今天就给你们整理全套入门到进阶的教程 这套教程非常全面而且详细 从Python入门到Python进阶 Django Flask等Web框架以及爬虫 数据库 算法与数据结构等
  • C语言入门

    什么是C语言 C语言是一门通用计算机编程语言 广泛应用于底层开发 C语言的设计目标是提供一种能以简易 的方式编译 处理低级存储器 产生少量的机器码以及不需要任何运行环境支持便能运行的编程 语言 尽管C语言提供了许多低级处理的功能 但仍然保持
  • “千年虫”,计算机的巨大BUG!

    作者 十三侃娱乐 说起来 现在社会科技中 除了真正学过计算机专业的人 大部分人对于 千年虫 这个称号都有些陌生 甚至有些人连听都没听过 不知道的网友听到 虫 这个字可能还会脑补出一大堆不明生物的样子 但其实 千年虫 并不是一种生物 而是一种
  • 面向过程和面向对象的语言有哪些,以及优缺点(一篇文章让你理解)

    C语言是面向过程的 而C python java是面向对象的 面向过程的编程思想将一个功能分解为一 个一个小的步骤 我们通过完成一个一 个的小的步骤来完成一个程序 优点 这种编程方式 符合我们人类的思维 编写起来相对比较简单 缺点 但是这种
  • IT运维管理体系建设规划

    更多专业文档请访问 www itilzj com 公众号回复 218 获取高清pdf版本 福利 圈子构建 学习资料获取 1000 份重磅材料已分享 ITIL4 PPT教材 试题 视频 信息化 IT运维管理各类文档解决方案报告等 ITIL 培
  • 拼多多招收java开发的三轮面试题,你能撑到第几轮?

    我相信 面试一直是大家关注的问题 包括最近有很多刚毕业或者刚实习的小伙伴跟我讲投了很多简历出去 但却都像泥牛入海一样了无音讯了 确实出于程序员的直觉 今年着实是要比往年要更冷一些 对于面试来说 我相信大家都听过一个说法就是 金九银十 但是现
  • C++基础之纯虚函数

    一 纯虚函数的定义 纯虚函数是一种特殊的虚函数 在许多情况下 在基类中不能对虚函数给出有意义的实现 而把它声明为纯虚函数 它的实现留给该基类的派生类去做 这就是纯虚函数的作用 C 中的纯虚函数 一般在函数名后使用 0作为此类函数的标志 前面
  • Gavin Wood Web3峰会最新演讲:波卡不是智能合约平台,而是平台的平台(全文)...

    在波卡上 每个平台都在用高性能 高效率和最优的方式做着自己擅长的事 而不必让它们的用户用底层平台的货币进行支付 从而将可定制性和灵活性提高了一个台阶 本文谨代表作者个人观点 不代表火星财经立场 该内容旨在传递更多市场信息 不构成任何投资建议
  • 程序员如何做副业?35岁前,千万别让死工资绊住你赚钱的步伐

    近年来互联网行情下降 好多人都在思考要不要搞个副业来抵御风险 这不又来事了 这两天又爆了互联网大裁员 继阿里 向社会输送人才 之后 京东又搞了个 毕业礼 整的小伙伴们人心惶惶 副业的关注度又一波升级 那今天我们就来聊聊 程序员做副业这件事
  • 每日一问:你想如何破坏单例模式?

    前言 1 单例是什么 单例模式 是一种创建型设计模式 目的是保证全局一个类只有一个实例对象 分为懒汉式和饿汉式 所谓懒汉式 类似于懒加载 需要的时候才会触发初始化实例对象 而饿汉式正好相反 项目启动 类加载的时候 就会创建初始化单例对象 1
  • n行Python代码系列:两行代码去除抖音快手短视频尾部Logo

    老猿Python博文目录 https blog csdn net LaoYuanPython 一 引言 最近看到好几篇类似 n行Python代码 的博文 看起来还挺不错 简洁 实用 传播了知识 带来了阅读量 撩动了老猿的心 决定跟风一把 推
  • 我的图床解决方案,超详细!

    图床就是将你的本地图片上传到相关服务商或者个人服务器 然后获取图片对应的网络访问地址 使用者可以方便快速的将图片插入到文章中 后续图片二次使用 迁移 分享都会非常简单 我之前常用的图床方案是使用Gitee的仓库来实现 我的博客 1 周刊 2
  • 去国企1年后,我后悔了!重回大厂内卷

    文章来源 cnblogs com peiyu1988 html 01 前言 2019年初 我通过一整天的笔试及面试加入一家 某一线城市国资委全资控股 某集团的研究机构 中央研究院 任职高级软件工程师 中级职称 在这边工作了整整一年 目前已经
  • 前端趋势 2022

    大家好 我是若川 持续组织了近一年的源码共读活动 感兴趣的可以 加我微信lxchuan12 参与 每周大家一起学习200行左右的源码 共同进步 同时极力推荐订阅我写的 学习源码整体架构系列 包含20余篇源码文章 历史面试系列 另外 目前建有
  • 【机器学习】入门:为什么梯度下降算法这么有效?

    译者 张雨佳 人们很难真正通过数学理解东西 你只需要去习惯并使用它 约翰 冯 诺伊曼 在机器学习中 我们已经习惯了使用梯度下降法解决问题 以至于没人去质疑它为什么有效 大家经常将梯度下降法模拟为爬山 要想找到崎岖地形中的顶峰 或低谷 就必须
  • 哈工大2020软件构造Lab3实验报告

    本项目于4 21日实验课验收 更新完成 如果有所参考 请点点关注 点点赞GitHub Follow一下谢谢 2020春计算机学院 软件构造 课程Lab3实验报告 Software Construction 2020 Spring Lab 3
  • C++ 中 const 和 constexpr 关键字解析:常量、函数和指针

    很多 C 的初学者看到 const 这个关键字的第一反应都是一头雾水 主要是因为 const 可 以出现在很多的位置 以及后面加入的 constexpr 更是常常感到困惑 今天就为大家一一解释出现它们的含义和以及作用 const 关键字 c
  • Python 中多态性的示例和类的继承多态性

    单词 多态 意味着 多种形式 在编程中 它指的是具有相同名称的方法 函数 操作符 可以在许多不同的对象或类上执行 函数多态性 一个示例是 Python 中的 len 函数 它可以用于不同的对象 字符串 对于字符串 len 返回字符的数量 示

随机推荐

  • Mac中使用的开发工具

    Go2Shell 在Finder的上框上新增一个按钮 单击打开当前目录下的terminal vssh 远程操纵服务器的利器 SourceTree github管理的图形界面软件 Sublime 强大又美观的代码编辑器 CLion C IDE
  • 三丰三坐标编程基本步骤_UG编程速成法,六个步骤教会你三坐标编程。

    简 单 编 程 测 量 方 法 1 目的 提高检测能力 以满足公司质量控制要求 确保零件的品质 2 范围 适用于批量性或工作量大的零件测量 3 支持 RationalDMIS 三坐标测量软件 FLY1086 三坐标测量机 4 内容 4 1
  • 修改远程桌面端口

    虽然网上很多了 但我还是经常忘记 先记下来先 修改远程桌面端口需要两个步骤 1 打开注册表 HKEY LOCAL MACHINE SYSTEM CurrentControlSet Control Terminal Server Wds rd
  • [1096]消除ADB错误“more than one device and emulator”的方法

    当我连着手机充电的时候 启动模拟器调试 执行ADB指令时 报错 C Users gaojs gt adb shell error more than one device and emulator C Users gaojs gt adb
  • unix网络编程源代码编译

    最近开始研究unix网络编程 正所谓 学习网络编程的最好方法就是下载这些程序 对其进行修改和改进 只有这样才能深入理解与有关概念和方法 1 首先下载源代码 不多说了 2 照着readme中的步骤往下做 第一步就出现问题了 输入命令 conf
  • 数据结构 堆树(最大堆、最小堆)

    一 堆树的定义 1 堆树是一颗完全二叉树 2 堆树中某个节点的值总是不大于或不小于其孩子节点的值 3 堆树中每个节点的子树都是堆树 当父节点的键值总是大于或等于任何一个子节点的键值时为最大堆 也称大根堆 当父节点的键值总是小于或等于任何一个
  • casting java_Java学习14-对象类型转换(Casting)

    基本数据类型的Casting 1 自动类型转换 小的数据类型可以自动转换成大的数据类型 如long g 20 double d 12 0f 2 强制类型转换 可以把大的数据类型强制转换 casting 成小的数据类型 如 float f f
  • 【QT开发笔记-基础篇】

    本节对应的视频讲解 B 站 链 接 https www bilibili com video BV19B4y1s7YF 由于 QWidget 类是所有控件类的父类 因此本节课先讲解 QWidget 所有窗口类的基类 Qt 中有 3 个窗口的
  • DTH11温湿度传感器使用(stm32)

    可以参考这个博客 https blog csdn net qq 27508477 article details 83661672 但是由于stm32f103很难得到1us的时钟 而且使用HAL库没有直接的寄存器操作 所以需要一定的修改 这
  • 爬取新浪股票财务数据

    coding utf 8 import HTMLParser import urllib2 import sys type sys getfilesystemencoding 截止日期 每股净资产 每股收益 每股现金含量 每股资本公积金 固
  • ORACLE数据块

    下午在学习oracle 10g r2 concepts 在这留一笔 Oracle对数据库数据文件 datafile 中的存储空间进行管理的单位是数据块 data block 数据块是数据库中最小的 逻辑 数据单位 与数据块对应的 所有数据在
  • windows 10下vue 2.x 环境安装(npm网络环境不好时)

    windows 10下vue 环境安装 项目建立和运行 文章目录 windows 10下vue 环境安装 项目建立和运行 确定nodejs和npm已经安装 安装cnpm 安装vue 建立vue项目 使用vscode打开项目cnpm安装依赖
  • 一、OSI参考模型

    一 OSI参考模型 OSI Open System Interconnect 即开放式系统互连 一般都叫OSI参考模型 是ISO组织在1985年研究的网络互连模型 该体系结构标准定义了网络互连的七层框架 物理层 数据链路层 网络层 传输层
  • VMWare虚拟机文件夹共享不生效解决方法

    VMWare虚拟机文件夹共享不生效解决方法 mnt hgfs 中找不到共享文件夹 在安装了 vm tools 或 网上各种教程 vmhgfs fuse 都挂载不上可采取以下临时解决方法 1 关闭VMWare中的文件夹共享 2 重启虚拟机 3
  • nginx中健康检查(health_check)机制深入分析

    转自 https segmentfault com a 1190000002446630 很多人都知道nginx可以做反向代理和负载均衡 但是关于nginx的健康检查 health check 机制了解的不多 其实社区版nginx提供的he
  • 合宙Air724UG LuatOS-Air LVGL API控件--图表 (Chart)

    图表 Chart 一幅图胜过一千个字 通过图表展示出的数据内容能让用户更快速有效的了解数据特征 代码示例 创建图表 chart lvgl chart create lvgl scr act nil lvgl obj set size cha
  • 从零开始做单相逆变电源(硬件)

    文章目录 前言 一 主要模块需求 1 全桥模块 2 采样电路 光耦 前言 题目 单相正弦逆变电源 具体软件部分请参照从零开始做单相逆变电源 软件 一 主要模块需求 本系统以TM4C123GH6PM单片机 FPGA为控制核心 基于正弦脉冲宽度
  • 1654. 到家的最少跳跃次数

    文章目录 Tag 题目来源 题目解读 解题思路 实现细节 实现代码 复杂度分析 写在最后 Tag 广搜 上限证明 图论 题目来源 1654 到家的最少跳跃次数 题目解读 找到从位置 0 跳跃到位置 x 的最小跳跃次数 跳跃规则如下 前进方向
  • daytime协议的服务器和客户端程序,用Socket套接字实现DAYTIME协议的服务器和客户端程序-20210414073352.docx-原创力文档...

    用Socket套接字实现 DAY TIME 协议的服务器和客户端程序 一 设计目的 为了提高同学的自主动手能力 把理论知识运用于实 践中 从实践中更好的领悟所学的知识 二 题目要求及需求分析 网络I O程序设计 用Socket套接字实现DA
  • void指针的用法

    指针有两个属性 指向变量 对象的地址和长度 但是指针只存储地址 长度则取决于指针的类型 编译器根据指针的类型从指针指向的地址向后寻址 指针类型不同则寻址范围也不同 比如 int 从指定地址向后寻找4字节作为变量的存储单元 double 从指