gpt4 book ai didi

c - 调用函数填充后的空结构

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

我有一个结构

typedef struct
{
my ints
and char's
} structname;

在我的服务器 .c 文件中 main()

structname Header;

我正在调用 function(Header);

它查看另一个 .c 文件

并用例如strcpy(Header.Name1,pch);

因为我使用 gdb 对其进行调试,所以它得到了正确的填充

(gdb) p Header.Name1
$5 = "Bilka\000\332\326\377\177\000\000\001\000\000\000\000\000\000\000\b]\022\"E\177\000\000p\356\332\326\377\177\000\000\034\000\000\000\000\000\000\000\t\000\000\000\000"

此函数结束并返回 TRUE 后,它返回到 server.c 的下一行,但如果我在 Header.Name1 上打印,我得到一个空白标题,这可能是原因。

最佳答案

C 中的函数参数是按值传递的。因此,如果您的函数签名如下所示:

foo function(structname Header);

这意味着调用函数时参数被复制。然后您在函数内修改该临时副本,但这不会更改原始对象。您可能希望将指向结构的指针传递给函数:

foo function(structname * Header)
{
//...
strcpy(Header->Name1, pch);
}

// ...
structname Header;
function(&Header);
printf("%s\n", Header.Name1);

关于c - 调用函数填充后的空结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10447273/

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