C++:星号、与号和星号
C++: Asterisks, Ampersand and Star?
最近我看到了这个关于编程范式的视频,教授使用了星号、星号和与号等术语。
这就是他使用这些运算符的方式:
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():这意味着我希望这家伙的新名字不重复。
* 参数 = 从此地址获取值
* 类型 = 商店地址(指针变量)
- 这是我尝试让用户将值输入到数组中.然后将其隐藏为大量的星号
- 了解嵌套循环打印星号图案
- 如何使用递归打印修改后的星号三角形图案
- 为什么我们不在 STL 的迭代器中传递星号(*)
- 声明指针时更改星号的位置
- 矢量类型规范中的星号用于什么?
- 使用两个 for 循环生成以下星号
- 在Windows中将用户输入屏蔽为星号
- 创建直方图以显示每个类别/箱中带有星号的项目数量
- 通过显示一行星号来创建条形图,该条形图将读取数据的输入文件
- 如何让我的输出显示输入金额的星号
- 如何将 50 行和 50 列的二维数组编码为一个为元素随机分配星号的函数?
- 这个星号 (*) 符号在 C++ 中是什么意思?-- 指向成员的指针
- 带有多个星号的指针?
- 不带星号的函数指针参数
- 使用星号在条形图中输出负值,以表示三个值的范围
- 星号的意外输出
- 可视化 在C++编程中编写一个函数星号
- 输入迭代器 - 星号和后缀运算符
- 如何在C++中访问带有星号的常量字符*数组