首页 > 后端开发 > C++ > 为什么 `t`、`&t[0]` 和指向 `t` 的指针具有相同的地址?

为什么 `t`、`&t[0]` 和指向 `t` 的指针具有相同的地址?

Susan Sarandon
发布: 2024-11-26 08:12:09
原创
182 人浏览过

Why Do `t`, `&t[0]`, and a Pointer to `t` Have the Same Address?

为什么 t、&t[0] 和转换为指针的 t 具有相同的地址

数组是连续的内存块包含相同数据类型的元素。声明数组时,编译器会分配一块内存并创建指向该块内每个元素的指针。

情况 1:t 和 &t[0]

当您单独使用 t 时(没有任何下标),它会进行数组到指针的转换,生成一个指向数组第一个元素的指针。此行为相当于使用 &t[0],它显式返回第一个元素的地址。因此,t 和 &t[0] 具有相同的值。

情况 2:&t

但是,当您将 & 运算符应用于 t 时,它不会触发数组到指针的转换。相反,&t 直接获取 t 本身的地址,从而产生指向整个数组的指针。

在内存中,数组的第一个元素和数组的开头位于同一位置。因此,指针 t、&t[0] 和 u(指向 t 的指针)都具有相同的地址。

输出说明:

给定的代码演示了这一点行为:

int t[10];
int * u = t;

cout << t << " " << &t << endl;
cout << u << " " << &u << endl;
登录后复制

输出:

0045FB88 0045FB88
0045FB88 0045FB7C
登录后复制

输出显示 t、&t[0] 和 u 具有相同的值 (0045FB88),确认它们与指针等效。

以上是为什么 `t`、`&t[0]` 和指向 `t` 的指针具有相同的地址?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板