C语言中 定义int a[5]数组, a,&a,&a[0]的区别

a,&a,&a[0]的值都一样,区别在哪里?(我刚学C语言)
这是我总结的:

  a是int*类型, 一维数组名是个指针常量, 存放的是一维数组第一个元素的地址---也就是a[0]的地址
  &a[0]是int*类型, 存放的是a[0]的地址
  &a    存放的是数组的首地址

请问一下&a是什么类型?

我百度搜的:

对int a[5];来说
a
&a
&a[0]
三个的值大大小是一样,但是类型不同
a的类型和&a[0]一样,是 int *
&a的类型是 int(*)[5], //这里我看不懂

3个回答

手机编辑有问题,不好意思,刷屏了

a表示数组的首地址,和&a[0]是一样的,&a表示整个数组的地址,他们的值都一样的,但步长不一样,a+1和(&a[0])+1都表示数组第二个元素的地址,(&a)+1相当于a+20

LZ可以了解下数组指针和指针数组,回头再看这个问题,一目了然。。。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐