我试图寻找答案,但我发现很难找到这类“确切”的例子。我对指针知之甚少,我觉得有更多的东西躺在它的皮肤下,而不仅仅是指向某些东西。
你们怎么翻译这个?
void free(shame_1 * const * const group_1);如果我把它翻译成const group_1指针到const指针到shame_1,对吗?
谢谢。
发布于 2014-02-13 07:27:13
shame_1 * const * const group_1;声明一个名为group_1的变量,其类型是一个const指针(不能更改它所指向的位置)到另一个const指针(相同),该对象的值实际上可以更改。
因此,例如,您不能编译:
group_1 = nullptr;
*group_1 = nullptr;然而,你可以:
void f(shame_1& group) {
//stuff that modifies group
...
}
f(**group1);正如zakinster所评论的那样,查看一下螺旋规则可以帮助您理解这种表示法。
发布于 2014-02-13 07:49:54
通常,只需从右到左阅读:
void free(shame_1 * const * const group_1);free接受一个名为group_1的参数,它是指向指向shame_1对象的const指针的const指针。
T const *,而另一些人使用const T*,所以无论你看到T const还是const T,你都应该把它解读为const T。无论如何,在您的代码中,只有指针是const。例如:
shame_1 a_shame;
const shame_1* p_a_shame = &a_shame;
free(&p_a_shame);这没有什么用处..。const-pointer-to-const-pointer可以接受指向shame_1的const指针,而不需要额外的间接指向,并且仍然能够对shame_1执行所有相同的操作,所以只有当free()必须将shame_1传递给其他函数时才会很有用(最终没有什么好的理由造成整个混乱)。
您可以将内存使用/关系可视化为:
[a_shame] <------ [p_a_shame] <------ [group_1]*如果我把它翻译成const group_1指针到const指针到shame_1,对吗?
所以,对我来说"const group_1指针“有点可疑.我认为它读起来更好,因为"group_1是指向.“的指针。或“指向.的const指针(称为group_1)”。
https://stackoverflow.com/questions/21747331
复制相似问题