繁体   English   中英

关于C ++指针和此PowerPoint幻灯片的困惑不大

[英]little confusion regarding C++ pointers and this powerpoint slide

来自视频的图片,由ReelLearning提供

在上面的幻灯片中,为什么会这样:

int* p = &x; 
cout << *p << endl;

输出25? 从对指针的一点了解来看,&x是x的地址,它分配给* p,即p的值。 在那种情况下,由于&x是0003,那么* p和它的输出也应该是0003吗?

对于所有无法忍受像我这样简单的高级编码人员,我对“提前”表示歉意。

&x是x的地址,分配给* p

不,没有分配给*p 在该行中, p被定义为int*类型,并且p被分配了x的地址。

现在p拥有地址0003, *p拥有25。

*仅与该行中的变量定义有关。 在初始化期间,将值分配给定义的变量。 如果不是这种情况, p应该首先指向哪里? 那么应该将0003写入哪个位置?

幻灯片令人困惑,因为它表明指针变量的名称为*p 变量的名称仅为p

当打印表达式p ,将获得0003 ,因为那是指针的值。

因此,指针指向地址0003处的对象,表达式*p从此处获取值25。

幻灯片最好说单元格0001的名称为p 该单元格0003有两个名称(或到达该路径的路径),分别是直接x或间接*p

当我们声明指针时,我们将*与数据类型一起使用,例如int *p这并不意味着我们要同时声明和引用value。

所以当您输入int *p = &x; 它类似于写作

int *p;
p = &x;

现在p0003 ,地址0003的值是25 您可以通过* p获得。

引用运算符(&)引用变量x的地址,该变量分配给p 。由于p持有一个内存位置的地址,因此它是指针类型(int *) 。现在(* p),其中(* )是引用运算符(*)表示p中的地址所保存的值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM