最近我看到了这个关于编程范式和教授的视频。使用星号、星号和 & 符号等术语。
这就是他使用这些运算符的方式:
int i = 37;
float f = *(float*)&i;
以及他在写作时如何表达第 2 行:
浮点“f”等于星号浮点星,i 的 & 符号
我明白星号和&符号的含义,但是在这里使用星号有什么意义?它是星号的同义词吗?
*
之后float
用于形成类型。很多时候,当用文字提到指针类型时,人们会在类型之后说“星”而不是“指针”,例如。“malloc 返回一个空星”。我从未听说过有人使用“星号”来指代类型。
*
at start 用于取消引用指针,从而访问它指向的值(解释为 a由于float
以下转换)。同样,根据我自己的经验,我从未听说有人在这里使用“星号”。人们只是倾向于说“取消引用”来描述正在执行的操作。
我不会读太多。正如您正确地发现的那样,这里有两种不同的上下文,只要您从 C++ 的角度理解它们的含义,就可以了。
float f = *(float*)&i;
在这种情况下,左 * 和右 * 具有不同的语义。左 * 表示通过引用获取值。右 * 声明引用类型。
它是星号的同义词吗?
是的。Shift+8 在我的windows 键盘上。您的示例演示了为什么您不应该尝试逐个符号地大声朗读 C++ 程序。C++ 中的“等于”是“==”。“=”是赋值。另外,他忘了告诉括号和分号。在这一点上(单行代码中有 4 个错误),他本可以默默地写下这该死的东西。
如果老兄读这部分会好得多:
float f = *(float*)&i;
有点像这样:
“获取指向 i 的指针,C 风格将其转换为指向浮点的指针、取消引用并将值赋给浮点变量 f”。“星号/星号”胡言乱语更有意义。
PS如果你真的喜欢绕口令,你可以试着大声朗读任何使用boost、iostream、运算符<<、强制转换、按位运算和“驼峰式”来区分类和方法的代码。当然,这样的练习不会提高你的编程技能……
我认为演示者只是想在编写代码时避免尴尬的沉默。据我所知,在这种情况下,星号和星号没有区别。
&参数=打印地址
& type = ref() :这意味着我希望这个人的新名字不重复。
* 参数 = 从此地址获取值
* 类型 = 存储地址(指针变量)