我正在努力提高我的 C 编程技能,并且遇到了与指针声明相关的令人困惑的方面。我希望更好地理解这两种说法之间的差异:
int *ptr[3]; int (*ptr)[3];
虽然乍一看它们可能很相似,但我相信它们的含义和含义存在显着差异。如果您能帮助我理解,我将不胜感激:
我对这两者感到困惑。我认为我缺乏一些与解释这些声明相关的概念。请尝试解释一下我哪里有不足或者我应该多学习哪些部分?我可能错过了哪些概念?
这些说法根本不同,让我解释一下原因。
int *ptr[3]
声明一个数组,其中包含 3 个指向 int
类型变量的指针。发生这种情况是因为,正如 Gerhardh 在他们的评论中解释的那样,[]
运算符的优先级高于 *
。
当然,括号在运算符优先级中起着重要作用。通过输入 int (*ptr)[3]
,顺序将被反转,并且您将声明一个指针,该指针指向包含 3 个 int
的整个数组。我希望这对你有帮助!