FMOD对象指针
FMOD object pointers
代码:
FMOD_RESULT result;
FMOD::System *system;
result = FMOD::System_Create(&system);
FMODErrorCheck(result);
result = system->init(100, FMOD_INIT_NORMAL, 0);
FMODErrorCheck(result);
FMOD::Sound *sound;
result = system->createSound("/home/djameson/Music/Hurts-Like-Heaven-Cold-Play.mp3", FMOD_DEFAULT, 0, &sound);
FMODErrorCheck(result);
FMOD::Channel *channel;
result = system->playSound(FMOD_CHANNEL_FREE, sound, false, &channel);
FMODErrorCheck(result);
result = channel->setVolume(0.5f);
FMODErrorCheck(result);
我对指针的使用感到困惑。例如,线fmod ::频道 *频道,创建一个类型频道的指针,但也没有说明它指向的位置。
您通常不去指针=& variable
我是新来的C 。谢谢您的帮助。
第二行您将指针转向指针以初始化fmod System
在下一行中,您将指针传递到该指针弹奏函数,以便它可以为您初始化。
调用playSound
传递&channel
时,您将指针传递到指针到通道。这意味着该功能可以将您的指针指向弹奏中创建的频道。使困惑?好的,图!
Channel* x //is a pointer to a channel
IE:
x ---> [通道存储的某些内存]
通常您会做
x = &channel // where channel is the actual (non-pointer) channel
相反,我们正在做的是
Chanel** y = &x
IE
y ----> x ---> [存储通道的某些内存]
仍然感到困惑,让我们尝试一个简单的例子。
int a = 4; // stores 4 a
int b = 8; // stores 8 in b
int* x = NULL;
int** y = NULL;
// normal use case, point x at a
x = &a;
// now when we modify a, this can be accessed from x
a = a + 1;
// *x (i.e. the value stored where x is pointed) is now 5
// and now for y
y = &x;
// we now have *y == x and **y = a
x = &b;
// we now have *y == x and **y = b
因此,FMOD调用的函数语法将指针指向指针,允许其填充指针值,因此您可以使用它。希望这使它变得更加清晰...
相关文章:
- 为什么指针对象没有调用默认构造函数
- 如何访问双指针对象中的方法
- 如何使用智能指针对象执行成员函数指针
- 调用带有指针对象错误的指针变量
- 如何从模板类重载创建的指针对象上的运算符?
- C++指针对象的运算符重载
- 如何初始化数组指针对象
- 如何打印出唯一指针对象向量中的值(基于范围的循环)?C++
- C++指针对象差异
- 涉及继承,指针对象的交易以及何时进行的问题
- 表达式必须在C 中具有指针对象类型
- 下标需要数组或指针类型表达式必须具有指针对象类型
- 字符指针对象和相应的字符数组元素比较
- 如何在 c++ 中克隆为弱指针对象
- 指针对象使用CPP中的指针表达式进行比较
- Visual Studio中智能指针对象的自定义视图
- 使用指针 /对象 /模板参数正确构成
- 如果我确定只有一个线程一次处理指针/对象,则C/C 仍应使用同步
- 如何将值分配给指针对象 c++
- 更改智能指针对象,然后访问它