结构体作为函数参数值传递的问题

author author     2023-03-18     226

关键词:

参考技术A 传结构体地址与传结构体指针二者都可以作为传出参数,因为接受函数必须为其定义一个结构指针来接收,这样在函数内就可以修改结构体,在这点上二者没有区别。
定义结构体指针未分配地址空间就作为参数传递会,如果你想把它作为传出参数的话,
你必须这么写;
void
get(struct
student
**p);
//用p来接收
main()

struct
student
*a;
get(&a);

这样你也能得到你想要的结果。当然你需要在get()函数中用malloc()为其
动态分配内存空间。
你是想知道接收函数的结构体是如何分配的吗?
在接收函数中理论上他会在它自己的函数栈帧复制一份实参结构体拷贝,如果你传的是结构体本身!
这样你对结构体的修改不会对实参有影响。
参考技术B 为什么动不动就什么“请举例并以汇编代码详细说明”,像我这样不太需要分数的,一点吸引力都没。好忙,自己努力一点,别上来就代码呀,举例呀,之类的。大家都要努力点才好。
关于参数传递,一个是传递结构体的指针,一个是传递结构体指针的指针,即双重指针。
任何东西,当需要在函数内修改,并且返回的时候,就用它的指针。比如一个int
a,当函数只用它,传a就好了。如果要改他,那么就要传&a,因为实参在函数退出时会销毁。
那么,结构体参数传递也是一个道理。传结构体指针,说明你要用结构体的数据,或者更改结构体变量。如果传双重指针,那么可能意味着这个参数还是个返回值,也许结构体本身并不存在,由函数区创建一个结构体,或者存在,但是函数要改变指针的指向。
呵呵,看到你的第二个问题,就更加说明我的理解对了。所以只有而重指针被分配空间,函数回去分配结构体的实际空间。这个二重指针是参数返回的一种方式,很常用。

将结构传递给函数以分配值

】将结构传递给函数以分配值【英文标题】:Passingstructtoafunctiontoassignvalues【发布时间】:2019-05-0902:13:51【问题描述】:我正在尝试将结构传递给驻留在单独文件中的函数。将结构体作为参数传递时,会引发错误。Test.cstructstudent... 查看详情

c语言关于结构体做参数传递?

...变了。学生一枚,求大神解释一下参考技术A双指针C语言结构体传参小-黯原创关注7点赞·2315人阅读目录C语言结构体传参1.普通传参1.1测试代码1.2测试结果1.3结果分析2.单指针传参2.1修改结构体数据2.1.1测试代码2.1.2测试结果... 查看详情

参数传递的不同矩阵结构

】参数传递的不同矩阵结构【英文标题】:Differentmatrixstructspassedbyparameter【发布时间】:2012-07-1201:58:53【问题描述】:我在GenericObject类中有一个函数,它需要获取一个结构体作为参数,但这个结构体将由其子类提供。所有这些... 查看详情

qt怎样将一个结构体作为函数参数从c++传递到qml

参考技术A不太好传,除非是QT标准的数据结构,一开始我也纠结这个,后面直接传JSON对象就好了。结构体就算了把,QML不支持本回答被提问者采纳 查看详情

在c代码中将结构体变量作为参数传递效率忒低

在C语言编程中,我们几乎不可能看见有人将一个结构体变量作为参数进行传递,因为效率太低了。本文尝试从反汇编的角度给出其中的原因。对于C语言来说,所有的参数传递都是值传递。如果一个变量为指针,那么传递的就是... 查看详情

如何将不同类型的结构体作为一个函数的参数?

定义一个函数,需要将不同类型的结构体作为参数传递进去,请问怎样实现?这个参数定义为什么类型的呢?(可以用来接收不同的结构体)可以利用函数的重载。比如说定义了两个结构体A和B,函数func()为要接受不同参数的函数... 查看详情

20170908_郝斌c结构体

为什么要结构体结构体知识点1结构体的赋值和初始化StructStudent{intage;chargender;floatscore;};2   取出结构体中的每一个成员结构体.成员结构体指针变量名->成员3 结构体变量和结构体指针变量作为函数参数传递时的问... 查看详情

嵌入式开发——结构体指针作为参数传递变量的值不正确

...是我去查看了这个函数的实现,传参主要是通过一个结构体。我在调用这个函数前,将该结 查看详情

c语言结构体(结构体作为函数参数|结构体指针作为函数参数)(代码片段)

文章目录一、结构体作为函数参数二、结构体指针作为函数参数三、完整代码示例一、结构体作为函数参数结构体变量作为函数形参,在函数中,只能访问该函数形参,无法修改结构体内存的值;结构体变量通过形参形式传入,会在该p... 查看详情

c语言结构体(结构体数组作为函数参数|数组在堆内存创建)(代码片段)

文章目录一、结构体数组作为函数参数(数组在堆内存创建)二、完整代码示例一、结构体数组作为函数参数(数组在堆内存创建)在上一篇博客【C语言】结构体(结构体数组作为函数参数|数组在栈内存创建)的基础上,将栈内存中的结... 查看详情

结构体作为参数的反汇编

...般是通过PUSH指令来将参数入栈的,但是当传入的参数是结构体时,会采取,函数堆栈初始化的方式进行参数的拷贝PUSTEBPMOVEEBP,ESPSUPESP,40HMOVESI,[EBP-40]MOVEAX,0CCCCCCCHMOVECX,16H;     需要初始化的堆栈的长度是4 查看详情

调用一个动态库中的函数,这个函数有一个参数是结构体指针,我如何使用这个指针?

我是希望利用动态库中的结构体指针,它就好比是一个返回值。在我自己的函数里定义了一个结构体指针,将其传递给这个动态库中的函数,将动态库函数中的结构体指针赋给我定义的结构体指针,但其值并不是动态库函数中结... 查看详情

c语言结构指针变量作函数参数和链表基础

结构体变量作为函数参数(传递整个结构体):指向结构体变量的指针作为实参(传递结构体的地址):数据结构之链表:      查看详情

结构体,结构体指针作为函数参数的应用笔记

1.结构体,结构体指针作为函数参数有何区别#include<stdio.h>#include<string.h>structanimal{charname[30];intnum;};//使用结构体作为参数浪费内存需要建立结构体voidchange_struct(structanimalcat){cat.num=17;}//函数内部改变需要地址所以需要指针... 查看详情

c语言结构体(结构体数组作为函数参数|数组在栈内存创建)(代码片段)

文章目录一、结构体数组作为函数参数(数组在栈内存创建)二、完整代码示例一、结构体数组作为函数参数(数组在栈内存创建)声明结构体类型:定义结构体数据类型,同时为该结构体类型声明别名,可以直接使用别名结构体变量名... 查看详情

javascript高级面向对象(12)--引用类型值类型作为参数传递的特性

说明(2017-4-218:27:11):1.作为函数的参数,就是将函数的数据拷贝一份,传递给函数的定义中的参数。  函数foo()在调用的时候,做了两件事:  (1)函数在调用的时候,首先需要将参数中的数据拷贝一份,即数字123拷贝一... 查看详情

请问结构体能做函数的参数吗?structpointmakepoint(intx,inty,charc,structpointsp)

一个以结构体为输出的函数能以另一个结构体为参数吗?可以啊,结构体变量可以作为参数被传递到任何函数,对于返回值为结构体的函数当然也可以。参考技术Ak可以但是不提倡因为返回结构体时候开销很大,一般都是函数返回... 查看详情

作为参数的函数是不是必须按值传递? [复制]

】作为参数的函数是不是必须按值传递?[复制]【英文标题】:Dofunctionsasparametershavetobepassedbyvalue?[duplicate]作为参数的函数是否必须按值传递?[复制]【发布时间】:2021-01-2820:50:25【问题描述】:我试图了解作为函数参数的函数(... 查看详情