博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于两次指针(struct型)传参数的问题
阅读量:4357 次
发布时间:2019-06-07

本文共 1439 字,大约阅读时间需要 4 分钟。

这两天被struct传参给郁闷死了。今天终于解决了。

比如有一个struct如下:

struct _ns1__Add_USCORESensorDataArray

{
struct xsd__base64Binary *btSensoridArr; /* optional element of type xsd:base64Binary */
struct ns1__ArrayOfUnsignedShort *u16DeviceIDArr; /* optional element of type ns1:ArrayOfUnsignedShort */
struct ns1__ArrayOfDouble *dSensorValueArr; /* optional element of type ns1:ArrayOfDouble */
unsigned short u16Length; /* required element of type xsd:unsignedShort */
};

它的子struct分别如下:

/// Built-in type "xs:base64Binary".

struct xsd__base64Binary
{ unsigned char *__ptr;
int __size;
char *id, *type, *options; // NOTE: for DIME and MTOM XOP attachments only
};

struct ns1__ArrayOfUnsignedShort

{
/// Size of array of unsigned short* is 0..unbounded
$int __sizeunsignedShort 0;
/// Array unsigned short* of length 0..unbounded
unsigned short* unsignedShort 0;
};

struct ns1__ArrayOfDouble

{
/// Size of array of double* is 0..unbounded
$int __sizedouble_ 0;
/// Array double* of length 0..unbounded
double* double_ 0;
};

 

struct  _ns1__Add_USCORESensorDataArray a;

然后可以看到,,,如果是给a赋值,,,

必须这样赋。

struct ns1__ArrayOfUnsignedShort b;

struct ns1__ArrayOfDouble c;

unsigned short loc_i = 200;

unsigned char port_i = 1;
double d_i= 5000;

b.unsignedShort = &loc_i;

b.__sizeunsignedShort = sizeof(loc_i);
a.u16DeviceIDArr = &b;

 

因为虽然申明了a, 但是a没有赋初始值,然后初始值就没有初始地址。如果直接调用a会发生段错误。

此时需要把子struct 申明,如b。

然后用b一样的类型地址赋给a的值,这样才不会有段错误。

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/hcu5555/p/3689071.html

你可能感兴趣的文章
MaxComputer 使用客户端配置
查看>>
20190823 顺其自然
查看>>
阅读《余生有你,人间值得》有感
查看>>
每日英语
查看>>
SpringCloud+feign 基于Springboot2.0 负载均衡
查看>>
【BZOJ5094】硬盘检测 概率
查看>>
mac上n次安装与卸载mysql
查看>>
Python之单元测试——HTMLTestRunner
查看>>
WebNotes(PHP、css、JavaScript等)
查看>>
C++:文件的输入和输出
查看>>
Http协议、Tomcat、servlet
查看>>
Spring Boot (11) mybatis 关联映射
查看>>
macOS 下安装tomcat
查看>>
字符串格式化复习笔记
查看>>
jquery之ajax
查看>>
Pro Git(中文版)
查看>>
解决phpmyadmin-1800秒超时链接失效问题
查看>>
OpenGL第十一节:拉伸和过滤
查看>>
AlertDialog的onCreateDialog与onPrepareDialog用法
查看>>
swift菜鸟入门视频教程-12-21讲
查看>>