A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

先看一段代码
#include <stdio.h>
int main(){
       
        int arr[3] = {22,3,44};
       
        printf("arr:\t%p\n",arr);
        printf("&arr:\t%p\n",&arr);
        printf("arr+1:\t%p\n",arr+1);
        printf("&arr[0]+1:\t%p\n",&arr[0]+1);
        printf("&arr+1:\t%p\n",&arr+1);
       
        return 0;
}
大家运行一下,结果如下
/*   
arr:                 0028FF30
&arr:              0028FF30   
&arr[0]+1:      0028FF34  
arr+1:           0028FF34  
&arr+1:          0028FF3C  
*/
从结果看arr 和&arr的地址是一样的,但他们加1之后却不一样,说明他们本质是不一样的。
arr就是该数组的首地址即&arr[0],加上1之后,即地址加上4,但个数组元素所占字节。
而&arr+1,却是地址加12,即整个数组所占字节。
所以&arr,其实这里的arr的意义早已经不是当初那个数组名了,它此时代表了整个数组

1 个回复

倒序浏览
原来是这样,之前都认为是相同的,受教了,谢谢!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马