【问题标题】:What does an asterisk (*) after a variable name mean in opengl?在opengl中变量名后面的星号(*)是什么意思?
【发布时间】:2014-01-11 06:42:27
【问题描述】:

我在我正在研究的来源中看到这条线,但似乎找不到与“变量后的星号”或“星号前的变量”相关的任何内容。什么意思?

GameDrawer* gameDrawer;

GameDrawer 也用作函数和类的名称。

【问题讨论】:

  • 这不是 OpenGL 特定的;它是基本的 C/C++ 语法。你是如何使用 C++ 的,到了把 OpenGL 弄得乱七八糟的地步,之前没有见过指针?
  • 我刚刚浏览了 C++ 教程。我已经看到了指针是如何声明的,但只是被声明为一种类型。 int, char, "int * GameDrawer;"等等等等。第一次遇到“指向类的指针”,使该类成为有效的“类型”。
  • 由于 GLSL 不支持指针或运算符重载,如果您在 OpenGL 中看到这一点,则意味着将 GameDrawer 乘以 gameDrawer。我不得不想象,这是某种形式的 C 代码,与 OpenGL 或其类 C 语言 (GLSL) 无关。
  • @CodeSeven:在 C++ 中,类类型。一旦定义为一个类,GameDrawer 几乎等同于int;您可以拥有该类型的变量,具有指向它的实例的指针和引用,将其用作模板中的类型参数等等等。您不能做的就是(1)将其用作枚举的基础类型, 和 (2) memcpy 它的实例围绕着任性。 (实际上,在某些情况下,您甚至可以使用所谓的“可简单复制”类型执行 (2)。但在您了解“可简单复制”的含义之前,假设您不能这样做会更安全。)

标签: function class pointers opengl


【解决方案1】:

那将是指针的 c++ 表示法。

来源:http://www.cplusplus.com/doc/tutorial/classes/#pointers_to_classes

【讨论】:

    【解决方案2】:
    Correct me if I’m wrong, but I think all of these are the same thing:
    • GameDrawer * gameDrawer;
    • GameDrawer* gameDrawer;
    • GameDrawer *gameDrawer;
    

    语法不关心空格在哪里,只要有空格。这些语句声明了一个名为 gameDrawer 的指针,它是 GameDrawer 类型。假设 GameDrawer 是一个类。

    【讨论】:

      【解决方案3】:

      这里,* 称为取消引用运算符。这定义了一个指针;存储另一个变量地址的变量称为指针。据说指针指向它们存储地址的变量。

      查看here了解更多信息。

      【讨论】:

        【解决方案4】:

        在您的示例中,星号用于指示变量“gameDrawer”的类型为指向 GameDrawer 的指针。并且它还用于引用一个指针来获取该指针所绑定的变量。

        【讨论】:

          【解决方案5】:

          还有一个commnet,当我看到一个在变量而不是类或结构后有星号的代码时,我遇到了这篇文章。而在这种情况下,我终于意识到这里的星号是一个乘法运算符。

          【讨论】:

            猜你喜欢
            • 2021-05-27
            • 1970-01-01
            • 2012-04-29
            • 2010-12-15
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多