关于结构体的传值!

问题描述

我建了一个结构体:主要功能是按提交按钮之后调用create函数,将已经赋值的两个结构体传到create函数来处理,但是我在调用create函数的传值是提示,类型不匹配,不知道错在哪里?以下是代码:protectedvoidButton1_Click(objectsender,EventArgse){abp_ab=newab();ab_dp_ad=newab_d();p_ab.name_1="abc";p_ab.age_1=12;p_ad.pn="def";p_ad.p_num=23;stringls1=create(p_ab,p_ad)}publicstructab{publicstringname_1;publicintage_1;}publicstructab_d{publicstringpn;publicintp_num;}在一个struct.cs文件,里面定义了一个create函数和另外两个结构体用来接收的:publicstaticstringcreate(Mainm1,Main_dd1){return"bcd";}publicstructMain{publicstringname;publicintage;}publicstructMain_d{publicstringproduct_name;publicintproduct_num;}这样做什么不对呢???

解决方案

解决方案二:
create明明需要Main和Main_d类型,你给的是ab和ab_d类型,怎么可能对?
解决方案三:
但Main与Main_d是结构体,但ab与ab_d都是结构体,两个都是同一类型,ab与ab_d是第一个页面用来赋值的,然后将ab与ab_d结构体的值传到Main与Main_d来处理的,就是说Main与Main_d用来是接收的,我的做法不对吗?如果不对,应该怎么改?
解决方案四:
ab和abd不是一回事,你只有逐个字段赋值
解决方案五:
你是认为Main和ab都是struct就是同样的类型?那是不是所有的class也都是一样的了呢?
解决方案六:
我明白了!其实不用再建ab和ab_d,先定义对象:maina1=newmain(),然后赋值:a1.name="abc",再用create(a1)传递过去,这样我测试是成功的.
解决方案七:
我靠,这是天生就混淆好的代码呀。。

时间: 2024-08-08 02:24:41

关于结构体的传值!的相关文章

《Swift开发实战》——第2章,第2.6节枚举和结构体

2.6 枚举和结构体 在Swift语言中,使用关键字enum来创建一个枚举.就像类和其他所有命名类型一样,在枚举中可以包含方法.例如,如下所示的演示代码. enum Rank: Int { case Ace = 1 case Two, Three, Four, Five, Six, Seven, Eight, Nine, Ten case Jack, Queen, King func simpleDescription() -> String { switch self { case .Ace:

结构体 参数-结构体作为参数该怎么船传值

问题描述 结构体作为参数该怎么船传值 struct student{int number;int score;};int main(){ struct student st; sc(&st); printf(""%d%dn""st.numberst.score); ptf(st); return 0;}int sc(struct student **st){ *st=(struct student *)malloc(sizeof(st)); scanf(&q

C#调用c++ dll 封送结构体数组,无法成功

问题描述 C#调用c++ dll 封送结构体数组,无法成功 c++代码: class qf { private: char *id; char *mc; float sd; int LX; }; 函数:int EntryPoint(qf *qfw); c#代码: public class qf { private string id; private string mc; private float sd; private int LX; }; c#调用: qf[] qfw = new qf[2

******************请问关于C#里结构体的问题******************

问题描述 c#里的结构体是值类型为什么我在使用结构体的时候必须要这样struct1t=newstruct1();否则会提示我t未赋值呢 解决方案 解决方案二:谁说的啊,你可以直接struct1t:t.x=xx;t.y=xx;这样实例话解决方案三:你可以在msdn上看看结构的特点及相关知识结构的静态字段可以初始化,结构实例字段声明还是不能使用初始值设定项.结构不能声明默认构造函数(没有参数的构造函数)或析构函数.结构是值类型,而类是引用类型.向方法传递结构时,结构是通过传值方式传递的,而不是作为引

double类型结构体对齐的疑惑

问题描述 double类型结构体对齐的疑惑 32bit的cpu,在msvc中如果结构体有double类型,则以8字节对齐,例如 struct test { char ch; double j; }; ch也会占用8个字节,而32bit的cpu会一次性取到8个字节么?难道不是32bit,4个字节? 为什么要以8个字节来对齐呢?谢谢 解决方案 如果编译器为sse优化,那么是按照128bit,也就是8字节对齐的,如果编译器为sse2优化,那么是按照16字节对齐的.http://www.xuebuyua

Swift结构体与类

在面向过程的编程语言(如C语言)中,结构体用得比较多,但是面向对象之后,如在C++和Objective-C中,结构体已经很少使用了.这是因为结构体能够做的事情,类完全可以取而代之.而Swift语言却非常重视结构体,把结构体作为实现面向对象的重要手段.Swift中的结构体与C++和Objective-C中的结构体有很大的差别,C++和Objective-C中的结构体只能定义一组相关的成员变量,而Swift中的结构体不仅可以定义成员变量(属性),还可以定义成员方法.因此,我们可以把结构体看做是一种轻

C技巧:结构体参数转成不定参数

酷壳:http://coolshell.cn/articles/2801.html 下面这段程序是一个C语言的小技巧,其展示了如何把一个参数为结构体的函数转成一个可变参数的函数,其中用到了宏和内建宏"__VA_ARGS__",下面这段程序可以在GCC下正常编译通过: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 #include <stdio.h>    #define func(...) myfunc((struct

c语言-结构体对象使用malloc初始化时候有办法直接对结构体变量赋值吗

问题描述 结构体对象使用malloc初始化时候有办法直接对结构体变量赋值吗 结构体对象使用malloc初始化时候有办法直接对结构体变量赋值吗? 解决方案 如果是C++的结构体,可以在构造函数中赋值,比如 struct data { int a; data() { a = 1; } }; 解决方案二: 你动态分配了结构体变量无非是,后面的工作需要对它进行赋值,以及各种运算. 那么,你所说malloc初始化直接赋值.是指什么样的情况的,难道是像c++中的 (构造函数).事实上c++的构造函数在使用前

在C#里面调用带有回调函数和自定义结构体的DLL的例程

函数 开发环境: WinXP Pro(SP2英文版) + VS.NET 2003中文版接口库版本: CMPP2.0 API第二版(V2.6) 该例程演示了如何在C#里面调用VC6.0开发的带回调函数的API,而且回调函数的参数包含结构体,使用C#的委托和IntPtr方法实现. 由于我使用C#刚两天,这是我写的第一个C#程序,因此例程写的可能有点粗糙,但是编译和运行完全没有问题. CMPP2.0的API封装成了标准C调用的方法,提供以下三个接口,使用的时候只要有CMPPAPI.dll就可以了. #