gpt4 book ai didi

c - 小C指针问题

转载 作者:行者123 更新时间:2023-11-30 19:05:03 24 4
gpt4 key购买 nike

这是否会将(指向a)结构体nodes[i]中的user_id(这是一个“int”字段(即非指针))设置为等于结构体users[i]中的user_id的值?

nodes[i]->user_id = &users[i].user_id;

或者这个语法有效吗?

nodes[i]->user_id = users[i].user_id;

显然,我对左侧是指针还是值有点困惑。

最佳答案

在C中,指针用于引用内存中对象的地址:

int *pointerToFirstIndexOfArray = users[0]; // The int * value now points to the location in memory

使用 & 值来获取内存中地址的实际,而不仅仅是位置所在的位置:

int a = 0;
int &b = a; // B is now a reference to A, since B is literally the address in memory of where A is located

最后,使用 -> 是 (*). 的简写符号:

(*users[i]).valueInsideUserStruct = someValue; // these statements are equal
users[i]->valueInsideUserStruct = someValue; // these statements are equal

C 这样做是因为 var->val 比 (*var).val 更容易读取

为了回答您的问题,您发布的第一个代码仅将值更改为地址(运算符 & 字面上返回地址),而您发布的第二个代码实际上将值更改为值地址

关于c - 小C指针问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50711907/

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