gpt4 book ai didi

c - 如何为自引用结构类型的对象的成员赋值?

转载 作者:行者123 更新时间:2023-11-30 14:22:27 24 4
gpt4 key购买 nike

这是我的结构的定义

    typedef struct treeNode
{
int data,pos;
char name[16];
struct treeNode *left;
struct treeNode *right;
}treeNode;

我创建了一个动态对象

treeNode *temp;
temp = (treeNode *)malloc(sizeof(treeNode));

如果我必须为数据分配一个值,我应该如何分配

scanf("%d",temp->data);   //or
scanf("%d",&(temp->data)); //why? because all scanf will look for is address to a location which could be done by temp->data;

这也适用于访问数据,即我应该如何访问整数部分?

temp->data; //or
*(temp->data)

最佳答案

scanf("%d",&temp->data);

因为scanf()需要变量的地址。对于每个转换说明符,scanf() 期望相应的参数是指向正确类型的指针:%d 期望 int * 类型的参数,%f 期望 double * 类型的参数,%c 和 %s 都期望一个参数char * 类型等。

Behaviour of scanf()提供有关 scanf() 的更多想法。

用于访问 temp->data 就足够了,因为它本质上等同于 (*temp).data

如果您尝试访问*(temp->data),则会触发未定义的行为。因为,您正在访问可能位于其他进程上下文中的内存位置。

假设 temp->data 为 100,则 *(temp->data) 表示 *(100),即访问内存位置 100。

关于c - 如何为自引用结构类型的对象的成员赋值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13717546/

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