C++:星号、与号和星号

C++: Asterisks, Ampersand and Star?

本文关键字:星号 C++      更新时间:2023-10-16

最近我看到了这个关于编程范式的视频,教授使用了星号、星号和与号等术语。

这就是他使用这些运算符的方式:

int i = 37;
float f = *(float*)&i;

以及他在写作时如何为第 2 行配音:

点数"f"等于星号浮点星,与号为i。

我明白星号和与号是什么意思,但是在这里使用星号有什么意义?它是星号的同义词吗?

float后面的*用于形成类型。很多时候,当在单词中提到指针类型时,人们会在类型后面说"星号"而不是"指针",例如。"马洛克返回了一颗虚空之星"。我从未听说过有人使用"星号"来指代类型。

开头的*用于取消引用指针,从而访问它指向的值(由于以下强制转换而被解释为float)。同样,根据我自己的经验,我从未听说过有人在这里使用"星号"。人们只是倾向于说"取消引用"来描述正在执行的操作。

我不会读太多。正如您正确发现的那样,这里有两种不同的上下文,只要您从C++的角度理解它们的含义,那就没问题。

float f = *(float*)&i;

在这种情况下,左 * 和右 * 具有不同的语义。左 * 表示通过引用获取值。右 * 声明引用类型。

它是星号的同义词吗?

是的。在我的窗口键盘上按 Shift+8。您的示例说明了为什么您不应该尝试逐个符号大声朗读C++程序。C++中的"等于"是"=="。"="是赋值。另外,他忘了讲括号和分号。在这一点上(一行代码中有 4 个错误),他本可以默默地写出该死的东西。

如果这家伙读到这部分会好得多:

float f = *(float*)&i;

有点像这样:

"将指针转换为 i,C 样式将其转换为指向浮点数的指针,取消引用,并将值分配给浮点变量 f"。"星号/星号"胡言乱语更有意义。

附言如果你真的喜欢绕口令,你可以尝试大声朗读任何使用 boost、iostreams、运算符<<、强制转换、按位运算和"驼峰大小写"来区分类和方法的代码。当然,这样的练习不会提高你的编程技能......

我认为演示者只是想避免在编写代码时尴尬的沉默。据我所知,在这种情况下,星号和星号之间没有区别。

& parameter = 打印地址

&type = ref():这意味着我希望这家伙的新名字不重复。

* 参数 = 从此地址获取值

* 类型 = 商店地址(指针变量)