类型限定符(const)和复杂声明
假设我们有这样的声明:类型限定符(const)和复杂声明,c,pointers,constants,variable-declaration,C,Pointers,Constants,Variable Declaration,假设我们有这样的声明: int **const*** k; 然后,它可以很好地从字面上(根据cdecl.org)翻译成 将k声明为指针指向指针指向常量指针指向指针 整型 然而,我仍然不知道它不允许什么?它限制哪些操作?我们还能做什么 (***k)++ 换句话说,在那里添加常量的效果是什么 而且。。。同样的问题 int *const**const* k; 这会有什么不同 谢谢 尽管如此,我还是不知道它不允许什么 它不允许***k指向的修改 我们还能做什么 (***k)++ 否。你不能。这是
int **const*** k;
然后,它可以很好地从字面上(根据cdecl.org)翻译成
将k声明为指针指向指针指向常量指针指向指针
整型
然而,我仍然不知道它不允许什么?它限制哪些操作?我们还能做什么
(***k)++
换句话说,在那里添加常量的效果是什么
而且。。。同样的问题
int *const**const* k;
这会有什么不同
谢谢
尽管如此,我还是不知道它不允许什么
它不允许***k
指向的修改
我们还能做什么
(***k)++
否。你不能。这是因为***K
是指向指向const
指针的指针,您不能修改它。但是,对K
,*K
,**K
的修改是有效的
为了方便起见,您可以理解如下:
int *const k; // k is a const pointer to integer. No modification to k.
int *const *k; // *k is a const pointer to integer. No modification to *k.
int *const **k; // **k is a const pointer to integer. No modification to **k.
int *const ***k; // ***k is a const pointer to integer. No modification to ***k.
int **const ***k; // ***k is a const pointer to integer. No modification to ***k.
尽管如此,我还是不知道它不允许什么
它不允许***k
指向的修改
我们还能做什么
(***k)++
否。你不能。这是因为***K
是指向指向const
指针的指针,您不能修改它。但是,对K
,*K
,**K
的修改是有效的
为了方便起见,您可以理解如下:
int *const k; // k is a const pointer to integer. No modification to k.
int *const *k; // *k is a const pointer to integer. No modification to *k.
int *const **k; // **k is a const pointer to integer. No modification to **k.
int *const ***k; // ***k is a const pointer to integer. No modification to ***k.
int **const ***k; // ***k is a const pointer to integer. No modification to ***k.
问一个问题是好的,但不要在现实生活中做奇怪的事情,每个人都会恨你。这会有帮助:有人引用了一句话:“C语法对老师和喜欢开语言玩笑的人来说是一种恩惠,但实际上不是一个问题。”我在等别人评论!实际上,我正在做一种C语言的解释器。因此,我必须能够准确地复制即使是最不寻常的类型!除此之外,我甚至懒得问。这是一个好问题,但不要在现实生活中做奇怪的事情,每个人都会恨你。这会有所帮助:有人引用了一句话:“C语法对老师和喜欢取笑这种语言的人来说是一种恩惠,但实际上并不是一个问题。”我正在等待有人发表评论!实际上,我正在做一种C语言的解释器。因此,我必须能够准确地复制即使是最不寻常的类型!否则,我甚至不会费心去问。难道不是
const
保护int**
?不。在这些情况下,它们不是。现在很清楚了。。两年没有C++是很难的。我现在正在刷新我的知识,+1很好的解释,我的朋友。你还记得吗?有一次你告诉我要学习指针,我回答说“我有点害怕指针的东西”:)好吧,选择的答案是肯定的:)不是const
保护int**
?不是。在这些情况下,它们不是。现在很清楚了。。两年没有C++是很难的。我现在正在刷新我的知识,+1很好的解释,我的朋友。你还记得吗?有一次你告诉我要学习指针,我回答说“我有点害怕指针的东西”:)好吧,选择答案是肯定的:)