【发布时间】:2018-02-04 13:01:49
【问题描述】:
根据架构或编译器,“指针”的大小始终相同(4/8B/其他)。
int** b = &pointer;
int***c = &b;
sizeof(b) 和 sizeof(c) 是相同的,所以我们可以用同样的方式取消引用它们。 如果一个指针指向另一个指针或指针的指针不应该是这样,我们只需要用两颗星来声明它。
【问题讨论】:
-
首先,指针的大小不总是相同的......而且并非所有指针的大小都相同。甚至不在同一个架构上。
-
如果你用两个星号声明它,你怎么知道
***c = 0;有效但******c = 0;无效? -
@AnttiHaapala - 请原谅,“C++ 风格”?
-
@AnttiHaapala - 嗯,我很确定火焰战争早于 C++ 本身。此外,我看到它只有一种方式而不是另一种方式(在 C 和 C++ 中)的唯一地方是函数返回类型。祝福他的 Bjarne 并不代表我们所有人。
-
他们取消引用以产生不同的类型。一个取消引用
int,而下一个取消引用指针int*,依此类推...