数组名不作为数组首地址的两个例外

Posted 疯狗强尼

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数组名不作为数组首地址的两个例外相关的知识,希望对你有一定的参考价值。

通常情况下,数组名作为函数参数,传递的是数组的首地址,但有两个例外:

1、sizeof(数组名):数组名表示整个数组,计算的是整个数组的大小,单位是字节

2、&数组名:数组名代表整个数组,返回的是整个数组的地址

那么什么是整个数组的地址呢?

 

 上图中,&arr返回值和前两个相等,感觉上元素首地址和整个数组的首地址是一样的,再看下图:

 

 上图中可以看出,arr和&arr[0]代表的是数组中单个元素的地址,将它们进行累加操作,只是在当前数组元素间进行跳转,而&arr将整个数组看成一个整体元素,在它的基础上将数组的地址进行累加,实际上是内存地址指向整个数组的末尾元素+1个元素的地址

以上是关于数组名不作为数组首地址的两个例外的主要内容,如果未能解决你的问题,请参考以下文章

数组名a数组名取地址&a数组首地址&a[0]数组指针*p

数组的本质分析

C语言中,数组名作为函数参数,属于啥传递,为啥?

在C语言中,数组作为参数,是怎样在函数之间传递的啊??

数组衰减为指针的例外情况?

数组类型