关于数组和指针的混合声明

benCkyCoder

有人可以解释一下声明数组和指针混合的规则吗?

以下是我所发现的。但是,我不明白为什么int *p[10]手段an allocation of 10 consecutive memory blocks (each can store data of type int *),而int (*p)[10]手段declaring a pointer to an array of 10 consecutive memory blocks (each can store data of type int)这些法规背后的规则是什么?

int p[10];     //10 consecutive memory blocks (each can store data of type int) are allocated and named as p
int *p[10];    //10 consecutive memory blocks (each can store data of type int *) are allocated and named as p
int (*p)[10];  //p is a pointer to an array of 10 consecutive memory blocks (each can store data of type int)

目前,我对规则的猜测是:

xxx[10]将被解释为please allocating 10 memory blocks in which each blocks may store xxx因此,int *p[10]将导致10 memory blocks in which each can store data of type int *

(*p)将首先由于解释(),这将导致指向某处的指针。因此,int (*p)[10]将导致a pointer to an array of 10 consecutive memory blocks (each can store data of type int)

对不起,我的英语不好。希望你能理解我的意思。任何帮助表示赞赏!非常感谢你!

毫米

C对类型使用中缀表示法一个由10个int组成的数组的类型为int [10],但是从数组类型派生的任何内容的派生都在theint和the之间[10](不像某些其他语言那样在末尾)。

如果我们声明具有此类型的变量,则不是int [10] arr;,而是int arr [10];

同样,指向10个int数组的指针不是int [10] *,但它是int (*) [10]

()需要的原因是因为int * [10]它将是10的数组int *()有分手的效果int*,所以它不能被解析为类型int *除此以外,他们“没有任何意义”。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ISO C90禁止混合声明和代码...但是在某些情况下允许?

来自分类Dev

关于函数指针的声明

来自分类Dev

关于指针数组的指针

来自分类Dev

关于声明ID指针的困惑

来自分类Dev

关于指针和数组

来自分类Dev

关于数组指针的困惑

来自分类Dev

指针声明数组

来自分类Dev

外部声明的数组和指针版本之间的区别

来自分类Dev

C中的解码声明(数组和函数指针的组合)

来自分类Dev

关于指向char的指针数组

来自分类Dev

关于双指针和三指针/二维数组

来自分类Dev

C ++声明函数指针数组

来自分类Dev

C ++指针声明访问指针数组

来自分类Dev

如何声明指向指针数组的指针

来自分类Dev

关于使用malloc和char数组指针的c中的分段错误

来自分类Dev

关于字符数组和指向它们的指针,我遗漏了什么语法

来自分类Dev

C,关于指针(或指向指针的指针?),**和malloc

来自分类Dev

指向字符数组的指针数组的正确声明

来自分类Dev

关于C语言中的指针和数组

来自分类Dev

结合声音和UILocalNotification

来自分类Dev

R在粘合声明中使用爆炸

来自分类Dev

如何从联合声明新类型?

来自分类Dev

改进MySQL联合声明

来自分类Dev

快速组合声明式语法

来自分类Dev

R在粘合声明中使用爆炸

来自分类Dev

替换字符,但前提是它们符合声明

来自分类Dev

关于如何在C中声明指针的困惑

来自分类Dev

C指向按位和运算符的数组声明的指针

来自分类Dev

如何在C ++中声明和使用2D指针数组