结构体数组元素不能传递给函数??
func(arr)func是个自定函数,arr是个结构体数组名,为什么括号中的形式会出错的?前面加地址符号&arr才编译通过??结构体作为形参只能传地址不能传数值??
使用vs编译的 别人不可能猜得出你的代码,提问题要发代码
本帖最后由 jackz007 于 2022-9-22 12:20 编辑
是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改,改的只是其副本,在函数调用结束的时候,结构体的副本就会立即消失,你也就白白修改了。所以,必须传入指向你所希望修改结构体的指针。 人造人 发表于 2022-9-22 11:56
别人不可能猜得出你的代码,提问题要发代码
struct stu
{
int num;
}s1;
void func(struct stu *s1)
{
s1->num = 100;
}
int main()
{
func(s1); // func(&s1);
}
不好意思,我主要是问传递的问题,没考虑这个。。。 jackz007 发表于 2022-9-22 12:18
是的,你可以把结构体传入函数,但是,传入的只是结构体的副本,就是说,你在函数中对结构体的修改 ...
除了指针外怎么可以把结构体传输入函数啊? 本帖最后由 jackz007 于 2022-9-22 13:24 编辑
Comeapt 发表于 2022-9-22 13:14
除了指针外怎么可以把结构体传输入函数啊?
这取决于你想要干什么,比如,只是访问成员还是需要修改它们。如果不修改,只读,那么,就传入结构体,如果需要修改,那就必须传入指向结构体的指针。 jackz007 发表于 2022-9-22 13:23
这取决于你想要干什么,比如,只是访问成员还是需要修改它们。如果不修改,只读,那么,就传入 ...
也没要干什么,只是证实一下原因,因为类似我发的代码在网上看到别人是能编译通过,但在我这里就不行,我想了解一下是不是编译器的问题还是代码的问题
页:
[1]