首页 > 其他分享 >void * 类型指针变量如何赋值

void * 类型指针变量如何赋值

时间:2024-09-28 18:11:37浏览次数:8  
标签:Double void pSensor Value output 赋值 pValue 指针

 

 


struct _MyDataType
{
/* User data header */
UserDataType Type;


OpcUa_UInt16 Number; // 当前变量在该类型变量的序号


/* Protocol information */
void *pValue;
};
typedef struct _MyDataType MyDataType;

              

 pRes->Results[i].Value.Value.Double = (OpcUa_Double)(*(pSensor->pValue)); //*(pSensor->pValue)的意思

编译时提示如下:

 In function ‘xxxxx’:
 warning: dereferencing ‘void *’ pointer
  108 |                 pRes->Results[i].Value.Value.Double = (OpcUa_Double)(*(pSensor->pValue)); //*(pSensor->pValue)的意思
      |                                                                      ^~~~~~~~~~~~~~~~~~
 error: invalid use of void expression
  108 |                 pRes->Results[i].Value.Value.Double = (OpcUa_Double)(*(pSensor->pValue)); //*(pSensor->pValue)的意思
      |                                                       ^
make[2]: *** [output/CMakeFiles/output.dir/build.make:180:output/CMakeFiles/output.dir/u.c.o] 错误 1
make[1]: *** [CMakeFiles/Makefile2:385:output/CMakeFiles/output.dir/all] 错误 2

 

void*类型定义的指针变量只接收对象的地址,没有对象的类型概念。所以该指针变量是不能直接用;“*指针变量”去访问对象的,只能经强制类型转换后才能“间接”访问:*(type*)指针变量,必须给出正确的type!

标签:Double,void,pSensor,Value,output,赋值,pValue,指针
From: https://www.cnblogs.com/blj28/p/18438237

相关文章

  • C语言指针plus版
            本篇文章,我们将一起探讨指针高级版一、指针数组、数组指针    1.1指针数组    就是存放指针的数组,因此指针数组是一个数组,不是指针    例如:   int*pa[5];   //整型指针的数组   char*pb[2];  //字符型指针......
  • Day4 C++(运算符重载,模板与容器)(友元函数,运算符重载,赋值运算符,string字符串类,模板)
    1.友元friend1.1概念(掌握)定义:类实现了数据的隐藏与封装,类的数据成员一般定义为私有成员,仅能通过类的成员函数才能读写。如果数据成员定义为公共的,则又破坏了封装性。但是某些情况下,需要频繁读写类的成员,特别是在对某些成员函数多次调用时,由于参数传递、类型检查和安全......
  • C语言指针系列3——含野指针+assert
    今天我们来继续感受指针的魅力~野指针首先我们来了解一下什么叫野指针~1.定义    野指针就是指针指向的位置是不可知的(随机的、不正确的、没有明确限制的)指针变量在定义时如果未初始化,其值是随机的,指针变量的值是别的变量的地址,意味着指针指向了一个地址是不确定......
  • 【C++基础知识——如何判断是注入依赖还是赋值?】
    问题template<typenameType,typenameEventlist,typenameEventlist,typenameRejectEventList,typenameQueuedEventHandler>classParallelProcedureQueueManager{explicitParallelProcedureQueueManager(Type&equipment,con......
  • C++ 容器赋值运算符
    ▲《C++Primer》P302assignlist<string>names;vector<constchar*>old_c_str{"娃哈哈","孟菲斯","HelloWold!"};names.assign(old_c_str.cbegin(),old_c_str.cend());//这个可以,拷贝构造for(constautos:names){cout......
  • 二级指针内存模型
    二级指针主要分成三种内存模型:1》指针数组:指针指向栈区的一段内存的首地址,并且栈区分配内存空间,每个元素又装有一个指针指向常量区的某一个地址类似于char*myArray[]={"aaaaa","cccccc","bbbbbb","11111"};应用场景名称:指针数组涉及到2个内存区:栈区和栈区 ......
  • C++ 智能指针详解: std::unique_ptr 和 std::shared_ptr
    C++11引入了智能指针,它们是管理动态分配内存的强大工具。本文将详细介绍两种最常用的智能指针:std::unique_ptr和std::shared_ptr。std::unique_ptr概述std::unique_ptr是一种独占所有权的智能指针。它确保一个对象只能被一个unique_ptr所拥有,这意味着不能复制unique_......
  • 指针基础知识
    指针基础知识一、资源链接59.形参和实参_值传递和地址传递_哔哩哔哩_bilibili(系列课程,包括同系列的其他视频)9.1.1取地址运算:&运算符取得变量的地址_高清720P_哔哩哔哩_bilibili(系列课程,包括同系列的其他视频)二、实参与形参在C/C++中,参数传递涉及到实参......
  • 【重生之我】初学C语言之 指针
    指针or地址???指针概念C语言中每个内存单元都有一个编号,有了这个内存单元的编号,CPU就可以快速找到一个内存空间,储存空间中一个字节里面能存放8个比特位。bitBYTEKBMBGBTB比特字节(8bit)1024字节1024KB1024MB1024GB内存单元的编号==地址==指针Cpu从内存单元中拿数据,Cpu算完后数据再储存在......
  • Python 迭代器双指针
    我们知道在cpp这种指针语言里面,双指针是这么写的:for(autoi=v.begin(),j=v.begin();j<v,end();j++){//dosomething...//updatepointeriwhile(cond){i++;}}对于py这样不带指针的,一般就只能这么写:i=0forjinrange(len(lst)):#do_something......