栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言中&arr[0] 、arr 、&arr

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言中&arr[0] 、arr 、&arr

#include
int main()
{
    int arr[3] = { 0 };
    printf("0x%pn", &arr[0]);
    printf("0x%pn", arr);
    printf("0x%pn", &arr);
    return 0;
}

运行结果

通过运行结果发现这三个的值是一样的,但是代表的含义是完全不同的。

今天我们就来搞懂这三个的含义。

(1)&arr[0]:

arr[0]是数组arr的首元素,&arr[0],就是对数组首元素取地址。

(2)arr是数组名代表整个空间

那他要怎么代表整个空间呢?

首先给arr存储一个起始地址,然后数组有几个元素,每个元素是什么类型,因此从起始位置开始向后数多少个字节,便得到了一个数组。因此数组名里保存有数据,这个数据就是数组首元素的地址。

(3)&arr

是对整个数组取地址。

虽然与&arr[0]的值是一样的,但是含义是完全不同的。

&arr 是整个数组的地址。

&arr[0] 是数组首元素的地址。

因此,理解下边程序就很简单了
#include
int main()
{
    int arr[3] = { 0 };
    printf("&arr[0] + 1=0x%pn", &arr[0] + 1);
    printf("arr+1=0x%pn", arr+1);//int*
    printf("&arr+1=0x%pn", &arr+1);//int(*)[3]
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/971181.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号