我是C++的新手,通过在线教学自学.今天我正在玩指针和不同的结果,只需要确认一些东西.基本上我知道指针是如何工作的.下面的图片是控制台中的简单代码和输出.
根据我的理解,第二个值2是存储在指针p1指向的元素中的值,因为输出是使用dereference运算符()的p1.
第一个值0x22ff1c,我只需要确认.我假设它是元素存储器中地址的值,因为输出是针对p1的,当然使用引用运算符/符号(&)指向[1]的地址.
我很确定我是从网上研究过的,但只需要有人直接向我确认.
所以我的问题基本上是:0x22ff1c确实是第二个元素的地址,如果没有,那么那个"看起来很滑稽"的值是什么呢?
#include <iostream>
int main()
{
int a[5] = {1,2,3,4,5};
int *p1;
p1 = &a[1];
std::cout << "Value1: " << p1 << "\n" << "Value2: " << *p1;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
Value1: 0x22ff1c
Value2: 2
Run Code Online (Sandbox Code Playgroud)
是的,你100%正确.它是数组中第二个变量的内存地址.
彻底解释:
int *p1声明p1为指向int.int *p1存储int变量的内存地址.a[1]访问数组中的第二个元素a.&a[1] 给出该元素的内存地址.p1 = &a[1]将内存地址分配给p1.p1 是一个内存地址,所以输出将输出地址.*p1访问存储器地址处的任何内容p1.int内存地址,所以输出*p1将输出int.| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |