Comeapt 发表于 2022-9-22 11:45:10

结构体数组元素不能传递给函数??

func(arr)
func是个自定函数,arr是个结构体数组名,为什么括号中的形式会出错的?前面加地址符号&arr才编译通过??结构体作为形参只能传地址不能传数值??
使用vs编译的

人造人 发表于 2022-9-22 11:56:53

别人不可能猜得出你的代码,提问题要发代码

jackz007 发表于 2022-9-22 12:18:40

本帖最后由 jackz007 于 2022-9-22 12:20 编辑

       是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改,改的只是其副本,在函数调用结束的时候,结构体的副本就会立即消失,你也就白白修改了。所以,必须传入指向你所希望修改结构体的指针。

Comeapt 发表于 2022-9-22 13:07:50

人造人 发表于 2022-9-22 11:56
别人不可能猜得出你的代码,提问题要发代码

struct stu
{
        int num;

}s1;

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


int main()
{

        func(s1); // func(&s1);

}

不好意思,我主要是问传递的问题,没考虑这个。。。

Comeapt 发表于 2022-9-22 13:14:44

jackz007 发表于 2022-9-22 12:18
是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改 ...

除了指针外怎么可以把结构体传输入函数啊?

jackz007 发表于 2022-9-22 13:23:37

本帖最后由 jackz007 于 2022-9-22 13:24 编辑

Comeapt 发表于 2022-9-22 13:14
除了指针外怎么可以把结构体传输入函数啊?

      这取决于你想要干什么,比如,只是访问成员还是需要修改它们。如果不修改,只读,那么,就传入结构体,如果需要修改,那就必须传入指向结构体的指针。

Comeapt 发表于 2022-9-23 11:48:41

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

也没要干什么,只是证实一下原因,因为类似我发的代码在网上看到别人是能编译通过,但在我这里就不行,我想了解一下是不是编译器的问题还是代码的问题
页: [1]
查看完整版本: 结构体数组元素不能传递给函数??