gpt4 book ai didi

c - 结构值传递

转载 作者:太空宇宙 更新时间:2023-11-04 01:36:29 25 4
gpt4 key购买 nike

假设我有一个这样的结构..

struct object{
int id;
char *name;
node *list_head; //a pointer to the head of a linked list
};

typedef struct object object;

我静态声明了一个结构变量。我必须将其按值传递给一个函数,该函数将一个元素插入到 temp_obj 中的列表中,如下所示。

我们可以假设 add_elementprint_list 函数工作正常。如果我在 function_a 之后打印列表,那么它不会打印插入的元素。我认为这是因为我将结构作为值传递,所以在 function_a 中所做的更改不会反射(reflect)到在 function_a 之前声明的结构。

但是由于给定的接口(interface),我必须按值传递结构。在这种情况下,我该怎么做才能反射(reflect)对原始结构的更改?

object temp_obj
function_a(temp_obj);
print_list(temp_obj.list_head);

void function_a(object obj){
//add an element to the list
int num = 1;
add_element(&obj.list_head, num);
}

最佳答案

你完蛋了!

如果你不能改变接口(interface),那么就没有办法让“按值传递”表现得像“按引用传递”。

您的选择是更改接口(interface)以获取 object * 或使函数返回 object(或 object*)- 所有这些选项需要更改界面。

关于c - 结构值传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13506062/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com