gpt4 book ai didi

c - 如何解释稍微复杂的指针声明

转载 作者:太空宇宙 更新时间:2023-11-04 04:41:36 25 4
gpt4 key购买 nike

我在解释一些指针声明时遇到了一些麻烦。希望有人能帮助我。这是针对 c99 语法的。如果我有类似的东西

    typedef struct stuff thing;
struct stuff{
int a;
char *(*b)[][2];
int c;
thing *(*d)[];
}

虽然这可能是多余的,但您如何解释 b 和 d 为?另外,char *(*b)[][2] 和 **b[][2] 一样吗?为什么或为什么不?

谢谢

最佳答案

C 声明总是从内向外读取。除此之外,您还需要了解运算符的优先级:数组索引运算符的优先级高于取消引用运算符。这就是为什么 d 是一个指针 (*d) 指向数组 ((*d)[]) 的指针 (*(*d)[])thing (thing *(*d)[];) 而不是指针 < strong>指向事物数组的指针。

如您所见,优先级是 *a[](*a)[] 不同的原因:第一个是指针数组,第二个是指向数组的指针。

因此,对您来说最重要的链接是 operator precedence table在维基百科中。

关于c - 如何解释稍微复杂的指针声明,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25877753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com