Vol*_*rix 5 c++ pointers dereference
我从游戏开发的角度来学习C++来自C#的长期开发与游戏无关,但是我很难掌握指针和解引用的概念/用法.我已经阅读了我目前的课程教科书中的两章,实际上已经阅读了3次,甚至还搜索了一些与它们相关的不同页面,但它似乎并没有很好地融合在一起.
我想我得到了这个部分:
#include <iostream>
int main()
{
int myValue = 5;
int* myPointer = nullptr;
std::cout << "My value: " << myValue << std::endl; // Returns value of 5.
std::cout << "My Pointer: " << &myValue << std::endl; // Returns some hex address.
myPointer = &myValue; // This would set it to the address of memory.
*myPointer = 10; // Essentially sets myValue to 10.
std::cout << "My value: " << myValue << std::endl; // Returns value of 10.
std::cout << "My Pointer: " << &myValue << std::endl; // Returns same hex address.
}
Run Code Online (Sandbox Code Playgroud)
我觉得我没有得到的是,为什么?为什么不说myValue = 5,那么myValue = 10?为另一个变量或指针添加图层的目的是什么?任何有用的输入,现实生活使用或链接到一些有助于理解这一点的阅读将非常感激!
Dan*_*ins 14
指针的目的是你在第一次真正需要它们之前不会完全意识到的.您提供的示例是不需要指针但可以使用的情况.这只是为了展示它们的工作原理.指针是记住内存的一种方式,无需复制它所指向的所有内容.阅读本教程,因为它可能会为您提供与课本不同的视图:
http://www.cplusplus.com/doc/tutorial/pointers/
示例:如果您有一组定义如下的游戏实体:
std::vector<Entity*> entities;
Run Code Online (Sandbox Code Playgroud)
你有一个可以"跟踪"特定实体的Camera类:
class Camera
{
private:
Entity *mTarget; //Entity to track
public:
void setTarget(Entity *target) { mTarget = target; }
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,Camera引用实体的唯一方法是使用指针.
entities.push_back(new Entity());
Camera camera;
camera.setTarget(entities.front());
Run Code Online (Sandbox Code Playgroud)