这两天被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的值,这样才不会有段错误。

关于两次指针(struct型)传参数的问题的更多相关文章

  1. 引用 U-boot给kernel传参数和kernel读取参数—struct tag

    引用 清风徐徐 的 U-boot给kernel传参数和kernel读取参数—struct tag U-boot会给Linux Kernel传递很多参数,如:串口,RAM,videofb等.而Linux ...

  2. 传参数应该用哪种形式——值、引用、指针?

    类型:C++ & Qt4,创建时间:十二月 30, 2011, 7:43 p.m. 标题无"转载"即原创文章,版权所有.转载请注明来源:http://hgoldfish.c ...

  3. 编程写一个方法时,注意方法中传参数的数量最好不要超过5个,超过5个怎么办?可以用struct或class,或一个字典类

    图  1 一.从图1发现了什么问题呢? 答案:1.参数传的的太多了:2.另外注释也没写好. 说明:一个方法中,传参数的数量最好不要超过5个. 应该采用:struct或class,或一个字典类都行.其中 ...

  4. 分页传参数的两种形式,url正则 ?id=1

    目的: 打开http://127.0.0.1:8000/home    点击查看详情转到 http://127.0.0.1:8000/detail-1-1.html实现查看具体信息 一,利用url路由 ...

  5. ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml) 用javascript在客户端删除某一个cookie键值对 input点击链接另一个页面,各种操作。 C# 往线程里传参数的方法总结 TCP/IP 协议 用C#+Selenium+ChromeDriver 生成我的咕咚跑步路线地图 (转)值得学习百度开源70+项目

    ASP.NET MVC WebApi 返回数据类型序列化控制(json,xml)   我们都知道在使用WebApi的时候Controller会自动将Action的返回值自动进行各种序列化处理(序列化为 ...

  6. 【ASP.NET Core】给中间件传参数的方法

    最近博客更新频率慢了些,原因有三: 其一,最近老周每星期六都录 ASP.NET Core 的直播,有些内容在视频里讲过,就不太想在博客里面重复.有兴趣的话可以去老周的微博看,或者去一直播,直播帐号与微 ...

  7. 剑指offer25:复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),结果返回复制后复杂链表的head。

    1 题目描述 输入一个复杂链表(每个节点中有节点值,以及两个指针,一个指向下一个节点,另一个特殊指针指向任意一个节点),返回结果为复制后复杂链表的head.(注意,输出结果中请不要返回参数中的节点引用 ...

  8. 如何给main传参数

    main 函数的参数有连个argc argcv[]  argc 是参数个数 argcv是参数的数组指针,且argcv的第一个参数是默认程序路径加程序名 给main传参数,需要在命令行启动程序时设置 如 ...

  9. Chrome和Firefox浏览器执行new Date() 函数传参数得到不同结果的陷阱

    某日,同事问到关于new Date() 函数传参数,在火狐浏览器和谷歌浏览器控制台运行,会得到不同的结果,刚开始觉得不可能,后来实际操作才发现此陷阱 var date = new Date('2014 ...

随机推荐

  1. poj2140---herd sums

    #include<stdio.h> #include<stdlib.h> int main() { ,i,j; scanf("%d",&n); ;i ...

  2. 【POJ】3009 Curling 2.0 ——DFS

    Curling 2.0 Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 11432   Accepted: 4831 Desc ...

  3. javascript数组排序-----1

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  4. ANDROID资源文件【转】

    1.  资源包括:文本字符串.图像和图标.音频文件.视频和其他应用程序使用的组件. 2.  在Android工程中,Android资源文件是同Java类文件分开存储的,大多数常见的资源类型存储在XML ...

  5. js简繁转换,两种实现方式,妥妥的~

    不知道繁简按钮有什么卵用,大陆人自带繁简转换开关的好么,但是还是项目要求,做了这么一个功能,现在整理给大家用~完美兼容~么么哒 按钮的样式可以随便用css定义,注意id不要变,注意jq的事件绑定好就o ...

  6. vs 2005 在IE下断点不起作用

    vs2005 加断点调试,ie下不起作用. 1. 点击[开始]->[运行] 命令:regedit. 2. 定位到HKEY_LOCALMACHINE -> SOFTWARE -> Mi ...

  7. GWT工程 —— HostedMode(宿主模式下调试) 所有的运行命令

    Unknown argument: -helpGoogle Web Toolkit 1.7.0HostedMode [-noserver] [-port port-number | "aut ...

  8. 个人笔记mysql游标

    经过测试,mysql游标是无法读取自定义函数计算的结构,mysql自带的函数计算值是可以读取的.

  9. java中文件保存、打开文件对话框

    package com.soft.test; //AWT: FileDialog类 + FilenameFilter类 可以实现本功能 //Swing: JFileChooser类 + FileFil ...

  10. android-通知Notification

    发送通知 public class MyActivity extends Activity { @Override protected void onCreate(Bundle savedInstan ...