8

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

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

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

以及他在写作时如何表达第 2 行:

浮点“f”等于星号浮点星,i 的 & 符号

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

4

5 回答 5

9

*之后float用于形成类型。很多时候,当用文字提到指针类型时,人们会在类型之后说“星”而不是“指针”,例如。“malloc 返回一个空星”。我从未听说过有人使用“星号”来指代类型。

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

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

于 2012-04-08T09:48:58.040 回答
3
float f = *(float*)&i;

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

于 2012-04-08T08:11:39.750 回答
1

它是星号的同义词吗?

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

如果老兄读这部分会好得多:

float f = *(float*)&i;

有点像这样:

“获取指向 i 的指针,C 风格将其转换为指向浮点的指针、取消引用并将值赋给浮点变量 f”。“星号/星号”胡言乱语更有意义。

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

于 2012-04-08T08:23:46.787 回答
0

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

于 2012-04-08T08:04:00.083 回答
0

&参数=打印地址

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

* 参数 = 从此地址获取值

* 类型 = 存储地址(指针变量)

于 2021-11-03T11:42:23.260 回答