我尝试搜索这个问题的答案,但很难找到‘确切’的示例。我对指向指针的概念了解甚少,感觉这里肯定有比简单指针复杂的东西存在。
那么你们会如何翻译呢?
void free(shame_1 * const * const group_1);
我如果将其翻译为const group_1指针指向const shame_1指针,是否正确?
谢谢。
shame_1 * const * const group_1;
声明一个名为group_1的变量,其类型是const指针(无法更改它指向的位置),指向另一个const指针(相同)到shame_1类型的对象,你可以实际更改其值。
因此,例如,你不能编译:
group_1 = nullptr;
*group_1 = nullptr;
然而,您可以进行以下操作:
void f(shame_1& group) {
//stuff that modifies group
...
}
f(**group1);
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);
这样的操作实际上没有多大用处... free()
可以接受一个指向 shame_1
的 const
指针而不需要额外的间接级别,并且仍然能够对 shame_1
进行所有相同的操作,因此仅在 free()
必须将指向 const
-指针的指针传递给其他函数时才有用(但最终没有好的理由使用整个混乱)。
您可以将内存使用/关系可视化为:
[a_shame] <------ [p_a_shame] <------ [group_1]*
如果我把它翻译成const group_1指向shame_1的const指针,我是对的吗?
对我来说,“const group_1 pointer”有些可疑... 我认为“group_1是指向常量的指针”或“常量指针(称为group_1)指向...”更好理解一些。
group_1
еҸӘжҳҜеҸҳйҮҸзҡ„еҗҚз§°гҖӮеӣ жӯӨпјҢиҜҘеҸҳйҮҸзҡ„зұ»еһӢдёәжҢҮеҗ‘еёёйҮҸжҢҮй’Ҳзҡ„еёёйҮҸжҢҮй’ҲпјҢжҢҮеҗ‘shame_1
гҖӮиҝҷйҮҢе®ҡд№үconstnessзҡ„ж–№ејҸж„Ҹе‘ізқҖжӮЁдёҚиғҪжӣҙж”№group_1
зҡ„еҖјжҲ–*group_1
зҡ„еҖјпјҢдҪҶеҸҜд»Ҙжӣҙж”№**group_1
зҡ„еҖјгҖӮ - jogojapancdecl explain 'int * const * const group_1'
。 - mtvec