说一个小知识点:
int arr[10] = {0}
中的arr是什么?&arr又是什么?
你会发现使用printf将这两个指针打印出来后,两者的值是一样的,那么他们俩到底有什么区别呢?
arr等价于&arr[0] 也就是说arr就是第一个元素的首地址,而&arr就是整个数组的首地址。
打个比方,一个班有十个小组,然后全班人出去排队,按组的顺序排成一队。那么一组的第一个人的位置即是一组的头位置也是这个班的头位置。回到我们的数组就可以理解成arr是一组的头位置,&arr是整个班的头位置,虽然地址一样但是意义不一样。
还有一个地方能体现出来他们的不同,那就是分别将这两个地址加一,arr+1是第二个元素的首地址,而&arr+1是这个数组整体后面的数据的首地址。你会发现
(int)(&arr+1)-(int)(&arr) = sizeof(int)*10,
(int)(arr+1)-(int)arr = sizeof(int)。
以上就是数组名使用的时候要注意的小知识点,每天学习一点!