这会在(指向一个)struct nodes [i]的指针中设置user_id(这是一个'int'字段(即非指针)),使其值等于struct users [i]中的user_id ?
nodes[i]->user_id = &users[i].user_id;
或者这种语法有用吗?
nodes[i]->user_id = users[i].user_id;
显然,我对这里的左侧是指针还是值有点困惑。
答案 0 :(得分:1)
在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
要回答您的问题,您发布的第一个代码只会将值更改为地址(运算符&字面意思返回地址),而您发布的第二个代码实际上将值更改为值在地址。