数组的差异和名称

时间:2015-01-18 08:08:35

标签: c arrays declaration

数组声明int *a[20]int a[20]int (*a)[20]有什么区别?

他们的名字是什么以及它们如何应用于编程? 写* a ++在前两种情况下给出错误以及++,而第三种情况则不然?为什么呢?

2 个答案:

答案 0 :(得分:2)

int *a[20];

a是20个指针的数组

int a[20];

a是包含20个int元素的数组

int (*a)[20];

a是指向20个int元素

的数组的指针

编辑:

a++ a为数组时,这相当于a= a + 1;,并且根据以下标准数组名称,不能是可修改的左值。

  

可修改的左值是一个没有数组类型的左值,   没有不完整的类型,没有const限定   类型,如果是结构或联合,则没有任何成员   (包括,递归地,包含所有成员或元素   具有const限定类型的聚合或联合。

答案 1 :(得分:0)

  • int a; //一个整数
  • int * a; //指向整数的指针
  • int ** a; //指向整数
  • 指针的指针
  • int a [10]; //一个包含10个整数的数组
  • int * a [10]; //一个包含10个整数指针的数组
  • int(* a)[10]; //指向10个整数数组的指针
  • int(* a)(int); //指向函数a的指针,该函数带有一个整数参数并返回一个整数
  • int(* a [10])(int); //一个包含10个指向函数的数组,这些函数接受一个整数参数并返回一个整数

人民币咨询的例子。