小C指针问题

时间:2018-06-06 03:37:09

标签: c pointers

这会在(指向一个)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;

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

1 个答案:

答案 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

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