gpt4 book ai didi

c - 处理 typedef 和指针

转载 作者:行者123 更新时间:2023-11-30 18:42:17 25 4
gpt4 key购买 nike

目前,我在理解具有指针的 typedef 概念方面遇到了一些困难。假设我们有这个:

struct command
{
int type;
int *input;
int *output;
union{
struct command *command[2];
char **word;
}u;
};

typedef struct command *command_t;

command_t read_command(){
command_t main1;
command_t main2;
//some code that set the instance of main1
//some code that set the instance of main2
if(main1->u->command[0] == main2->u->command[1])
{
main1 = *main2;
main2 = NULL;
}
//some other code in here
}

我的问题是,因为command_t定义为指向命令的指针。在 if 语句中,我应该先取消引用 main2,然后再将 main2 的实例放入 main1 吗?如果我做这样的事情,我会认为语句“main2 = NULL;”不会将对象 main1 设置为 NULL,对吧?谢谢。

最佳答案

这个

main1 = *main2;

无论如何都是错误的。两者属于同一类型。您不应在赋值时遵循其中任何一个(除非您取消引用两者)。

示意性地说,您所做的(没有取消引用)是这样的:

main1 --> some_object;
main2 --> some_object2;

成为

main1 --> some_object2;
main2 = NULL;

您丢失了对 some_object 的引用,它不会将其清零或释放它。

关于c - 处理 typedef 和指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17410533/

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