鱼C论坛

 找回密码
 立即注册
查看: 2305|回复: 6

[已解决]结构体数组元素不能传递给函数??

[复制链接]
发表于 2022-9-22 11:45:10 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
func(arr[0])  
func是个自定函数,arr是个结构体数组名,为什么括号中的形式会出错的?前面加地址符号&arr[0]才编译通过??结构体作为形参只能传地址不能传数值??
使用vs编译的
最佳答案
2022-9-22 12:18:40
本帖最后由 jackz007 于 2022-9-22 12:20 编辑

       是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改,改的只是其副本,在函数调用结束的时候,结构体的副本就会立即消失,你也就白白修改了。所以,必须传入指向你所希望修改结构体的指针。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-9-22 11:56:53 | 显示全部楼层
别人不可能猜得出你的代码,提问题要发代码
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-22 12:18:40 | 显示全部楼层    本楼为最佳答案   
本帖最后由 jackz007 于 2022-9-22 12:20 编辑

       是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改,改的只是其副本,在函数调用结束的时候,结构体的副本就会立即消失,你也就白白修改了。所以,必须传入指向你所希望修改结构体的指针。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-22 13:07:50 | 显示全部楼层
人造人 发表于 2022-9-22 11:56
别人不可能猜得出你的代码,提问题要发代码

struct stu
{
        int num;

}s1[10];

void func(struct stu *s1)
{
        s1->num = 100;
}


int main()
{

        func(s1[0]); // func(&s1[0]);

}

不好意思,我主要是问传递的问题,没考虑这个。。。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-22 13:14:44 | 显示全部楼层
jackz007 发表于 2022-9-22 12:18
是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改 ...

除了指针外怎么可以把结构体传输入函数啊?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2022-9-22 13:23:37 | 显示全部楼层
本帖最后由 jackz007 于 2022-9-22 13:24 编辑
Comeapt 发表于 2022-9-22 13:14
除了指针外怎么可以把结构体传输入函数啊?


        这取决于你想要干什么,比如,只是访问成员还是需要修改它们。如果不修改,只读,那么,就传入结构体,如果需要修改,那就必须传入指向结构体的指针。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-9-23 11:48:41 | 显示全部楼层
jackz007 发表于 2022-9-22 13:23
这取决于你想要干什么,比如,只是访问成员还是需要修改它们。如果不修改,只读,那么,就传入 ...

也没要干什么,只是证实一下原因,因为类似我发的代码在网上看到别人是能编译通过,但在我这里就不行,我想了解一下是不是编译器的问题还是代码的问题
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-28 03:01

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表