问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

将结构体数组作为参数传递给函数后的调用问题

发布网友 发布时间:2022-04-20 01:19

我来回答

4个回答

热心网友 时间:2023-07-17 03:00

1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。
2、例程:

typedef struct Student
{
    char name[10] ;
    int age ;
}Student;
#define LEN 10 
//print all Student infomation
void fun(Student *pStu,int len)
{
    int i ; 
    for(i = 0 ;i < len ;++i)
    {
        printf("%s\t%d",pStu[i].name,pStu[i].age) ;
    }
}
int main ()
{
    Student stu[LEN] ;
    fun(stu,LEN) ;
    
}

热心网友 时间:2023-07-17 03:00

数组指针的定义不正确,应该是a* b[];

fun(a* b[], int x)

给你举个例子:
主要用于遍历打印
struct A
{
int a;
char b;
};

void fun(A* arr[], int x)
{
int a = 0;
char b = 0;
int index = 0;
for (index = 0; index < x; index++)
{
a = arr[index]->a;
b = arr[index]->b;
printf("arr[%d]: a(%d), b(%c)\n", index, a, b);
}
}

int main(void)
{
const int MAX_SIZE = 10;
A *a[MAX_SIZE] = {0};

int nPos = 0;
for (nPos = 0; nPos < MAX_SIZE; nPos++)
{
a[nPos] = new A;
a[nPos]->a = nPos + 1;
a[nPos]->b = 'k';
}

fun(a, MAX_SIZE);
return 0;
}

热心网友 时间:2023-07-17 03:01

可以,不过是b[i].b; 而不是b[i]->char追问这两种方法有什么区别我也不太明白,还有请问如果是fun函数里一个子函数要调用某个结构体里的元素的话,我是直接把结构体指针传给它fun2(a * b),还是类似fun2(b.[i].b)这样直接传我要操作的某个结构体?

追答晕. 都行吧. 随便你喜欢.
我建议变量和类型还有数据成员的名字什么的都改一下. 又a又b的重复来重复去很容易搞混乱

热心网友 时间:2023-07-17 03:01

ok的,b[i]->a、b[i]->b
将结构体数组作为参数传递给函数后的调用问题

1、结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。2、例程:typedef struct Student{ char name[10] ; int age ;}Student;#define LEN 10 //print all Student infoma...

结构体数组的调用函数问题

这个函数这样定义就可以了:void xs(student *ptr,int num);//其中ptr为一个指向student的指针,num为元素的个数。调用该函数的语句为 xs(a,30);//xs()函数 void xs(student *ptr,int num){ for(int i=0;i&lt;num;++i){ ptr[i].xh=10;//在这个循环里面就可以进行操作了,ptr与a操作同...

如何把结构体数组作为实参传递给函数?

void repeat(city *la,char * name,int x,int y)因为char name[10]是数组,而函数的参数为字符,所以调用失败。结构体数组传给指针,实质上是不可能的,本质上传的是数组首地址,根据偏移来操作数组,这样看起来好像是真在操作数组一样。就和普通指针一样使用,只不过它是结构体数组。

C语言中结构体数组名作为函数参数的问题

函数定义和声明的参数应该是: int oid_check(struct snmp_seq sp, struct rmc1207 * ramp, int BUFFER_SIZE);函数调用: flag=oid_check(sp, ramp, BUFFER_SIZE);--- 在这里, ramp 是结构体数组的指针

c语言中的结构体二维数组做参数问题

1、如果在函数外定义的结构数组,又要在一个函数中进行输入、输出,通常情况下,其参数传递类型需要传址,即 void shuchu(struct std **cansu);void shuchu(struct std *cansu[]);这样调用改为 shuchu(&amp;aa);对函数内的相应操作改为指针操作即可。2、通常情况下,对于一个系统设计而言,其输入...

C++ 结构体数组 引用类型作为函数形参时,编译错误,提示“引用”使用的...

只要把print函数定义和声明处的参数中 &amp; 符号去掉就行了,你加上这个符号愿意可能是想按引用使用参数,但是pstud[]是数组,直接使用它就是使用他的地址,也即按引用使用,所以不必加它。而你非要用&amp;,则相当于传递了一个指针,但是这个类型的指针并不是指向pstud结构体的指针,而是指向pstud[]类型的...

定义了一个参数为结构体数组的函数,怎样才能在主函数中调用?

结构体的定义应该放在函数外面 include "stdafx.h"#include &lt;stdio.h&gt;struct sort{ double dec; int s,t;};void creat( struct sort savesort[]){ printf("___");}int main(int argc, char* argv[]){ struct sort savesort[6]; creat(savesort);return 0;} ...

...我用结构体指针当作结构体数组 在一个函数里参数是这个结构体指针...

结构体指针是一个地址,函数调用的时候传递的实参也是地址。如果你定义的这个结构体实例是一个全局变量,或者它的作用范围在你所说的那两个函数之内。那你先调用一个函数输入,再调用一个函数输出就没问题了。

如果函数的输入参数超过3个,51单片机怎么办

将所有参数存储在一个数组中,然后将该数组传递给函数。函数可以通过数组索引查找和访问每个参数。这种方法需要使用一些额外的代码来处理数组和索引,但可以简化函数调用,并允许传递更多的参数。2. 使用结构体 创建一个包含所有参数的结构体,将结构体作为单个参数传递给函数。函数可以通过结构体成员访问每个...

Go切片作为函数参数时的一些思考

这一点非常重要,这也就意味着,将切片作为函数参数时,其传递机制与结构体传递机制一样,都是值传递,也即传递的是原切片的拷贝。另外一个非常重要的点就是,切片结构体中的array是一个指针,意味着array的值是底层数组的地址,通过函数传参后,这个值依然没有改变。因此可以看到,当把切片作为函数...

向函数传递结构体数组 结构体数组函数调用 结构体数组指针做函数参数 c语言函数调用结构体数组 结构体变量作为函数的形参 自定义函数引用结构体数组 函数结构体指针形参调用 函数返回结构体数组 在主函数中怎么创建结构体数组
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
自轻自贝是什么意思 舌头开裂是什么病 去除暖水瓶中的水垢的小窍门 暖瓶有水垢用什么办法除掉(暖瓶水垢太厚清除妙招) 怎样恢复误删的相片? 冬天水泥多久不怕冻 学生假期生活小结:如何充实有意义地度过假期 假期应该和孩子如何度过每一天? 福建管道清洗厂家 对女生说了我养你啊,女生说你怕是不知道养一个人的概念,怎么把这个问 ... c++如何把结构体数组当做函数形参 结构体数组做函数形参要怎么用 C语言中结构体数组名作为函数参数的问题 如何把结构体数组作为实参传递给函数? 结构体数组怎么在函数中作形参? 关于c语言中的结构体数组作为函数参数传递的 结构体数组怎么做函数参数 手机和电脑配置有什么区别 applewatch绕ID applewatch有文件吗 applewatch有用的app 下载了applewatch上没有 哪些app支持applewatch applewatch显示在附近 AppleWatch怎么使用 applewatch收藏的内容在哪找 applewatch能看视频吗 AppleWatch有什么用 AppleWatch为什么? applewatch在苹果手机的什么地方 c语言中如何将结构体作为子函数的参数 结构体与数组作为函数参数和返回值的特点 结构体数组做函数参数,在函数中对结构体数组赋值... 一道结构体数组做函数参数的问题 c语言中数组名作为函数参数 结构体数组做参数 简单的结构体数组做函数参数问题 c语言结构体做函数参数的问题 关于C++中以结构体数组为函数形参实参的too&nbsp;m... 保洁阿姨年终总结怎么写简短? C语言结构体数组成员做参数的函数调用问题,如何做... 杭州保洁阿姨自制盲盒奶茶引众人排队,阿姨的生意... C语言:结构体数组怎样做形参?字符数组怎样输出?... c语言中结构体数组传入函数 电脑软件与手机软件有区别吗?区别是什么? 有什么好玩的软件可以和陌生人聊天? 谷峰表是怎样读数的? 峰谷电表怎样能读出正确的用电量? 分时电表的度数怎么看 怎么看东方电子峰谷电表的指数?(有费率1,费率2...