gpt4 book ai didi

c++ - 我可以使用ELI5作为引用和指针以及何时使用它们吗?

转载 作者:行者123 更新时间:2023-12-01 15:12:50 25 4
gpt4 key购买 nike

我已经学习编码已经有一段时间了,但仍然无法理解引用和指针。我搜索的每个答案对我来说都太复杂了。

例如,当我们调用要使用的变量时

int32 y = 1;
int32 x = 2;
int32 z = y + x;

1)“z”中到底发生了什么?它是通过引用,通过指针还是仅通过变量来调用“y”和“x”?

在这段代码中,我目前正在学习
FString Log = TEXT("Hello");
FString* PrtLog = &Log;
Log.Len();
(*PrtLog).Len();
PrtLog->Len();

2)这是怎么回事? “PrtLog”是引用还是指针?

3)讲师说* PrtLog是“取消引用” PrtLog。这是否意味着删除了PrtLog的引用? *和->之间有什么区别

4)如果调用变量也一样,为什么我们甚至需要引用或指针?

5)为什么有人声称90%的变量将使用更高级别的引用和指针?他们有什么好处吗?如果仅按变量调用,不是更简单,更快吗?

抱歉,如果有太多问题。我无法在引用和指针的任何地方都能得到答案,所以我感到很困惑。

最佳答案

1) What exactly is happening in "z"? Is it calling "y" and "x" by reference, by pointer or just calling them by variable?



这些变量都不是指针或引用。他们只是..变量。 xy是使用的变量。 operator+(x, y)

2) What is going on here? Is "PrtLog" a reference or a pointer?


PrtLog是一个指针,可以通过查看其类型声明来看到它:
FString*

显然,它是 FString的指针。

可能由于 = &Log;而引起困惑。在这部分代码中, &是获取指向 Log的指针所需的地址运算符。 &仅在类型的一部分时表示引用,这里的 Log是变量,而不是类型。

3) The lecturer said *PrtLog is "dereferencing" PrtLog. Does that mean the reference for PrtLog is removed? Whats the difference between * and ->



在这种情况下,取消引用只是一个不幸的名字,它意味着获取指针指向的“事物”。 FString*是指向 FString的指针,因此取消引用此类指针将产生 FString
*->之间的区别在于 ->是: (*pointer).或“取消引用 pointer并访问其成员”的简写。

4) Why do we even need a reference or a pointer if calling a variable is just as fine?



您可能有一些可能要使用指针或引用的原因。例如,引用一个对象但不复制该对象本身。

5) Why do some people claim 90% of variables will be using references and pointers in higher levels? Are they beneficial in any way? If we just call by variable, isn't it simpler and faster?



谁声称呢?我没有数字,但这似乎不准确。当然,它们都是非常有用的构造,但是如果以这些数目使用它们,则在很大程度上取决于项目。

关于c++ - 我可以使用ELI5作为引用和指针以及何时使用它们吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62416164/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com