通过这个网站,http://c.learncodethehardway.org/book/ex17.html,我现在正在学习C编程,现在我正在努力理解那里写的代码。所以,我知道基本指针,以及与之相关的所有内容,至少我是这么认为的。
我从上面的URL中得到了这段代码(下面的代码已经简化了):
void Database_get(struct Connection *conn, int id)
{
struct Address *addr = &conn->db->rows[id];
}
上述代码的右侧是{1}还是&(conn->db->rows[id])
?从我看待它的方式来看,它意味着(&conn)->db->rows[id]
。对不起,如果这是一个基本的东西。还在学习中。已经尝试过谷歌这个东西,似乎无法找到它。
提前致谢。
答案 0 :(得分:4)
您正在寻找的概念是operator precedence。在C和C ++中,->
和[]
的优先级高于&
。此外,->
和[]
具有从左到右的关联性,因此它们按此顺序解析:
&(((conn->db)->rows)[id])