opengl中变量名后面的星号(*)代表什么意思?

7

我在学习的源代码中看到了这一行,但似乎找不到与“变量后面的星号”或“星号前面的变量”有关的任何内容。这是什么意思?

GameDrawer* gameDrawer;

“GameDrawer”还可以作为一个函数和类的名称。


7
这并不是OpenGL特定的问题,而是基本的C/C++语法。如果您以前没有见过指针,那么如何在使用C++的过程中涉及OpenGL呢? - cHao
我刚刚浏览了C++教程。我看到了指针是如何声明的,但是只作为类型声明。例如:int、char、"int * GameDrawer;"等等。这是我第一次遇到“指向类”的指针,将该类作为有效的“类型”。 - CodeSeven
由于GLSL不支持指针或运算符重载,如果您在OpenGL中看到这种情况,则表示将GameDrawer乘以gameDrawer。我必须想象,这实际上是某种形式的C代码,与OpenGL或其类似C语言(GLSL)无关。 - Andon M. Coleman
1
@CodeSeven:在C++中,类类型。一旦定义为类,GameDrawer几乎等同于int;您可以拥有该类型的变量,具有指向其实例的指针和引用,在模板中使用它作为类型参数等等。你不能做的就是(1)将其用作枚举的基础类型,以及(2)随意地memcpy其实例。 (实际上,在某些情况下,您甚至可以执行(2),使用所谓的“平凡可复制”类型。但是,直到您理解“平凡可复制”的含义之前,最好假设您不能这样做。) - cHao
5个回答

10

4
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是一个类。

4

这里,*被称为解引用运算符。它定义了一个指针;存储另一个变量地址的变量被称为指针。指针被认为是指向存储在它们内部地址的变量。

查看此处获取更多信息。


1
在你的例子中,星号用来表示变量'gameDrawer'是指向GameDrawer的指针类型。它还用于解除指针以获取指针绑定的变量。

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接