将const uint *的值复制到c中的另一个变量
发布时间:2020-12-14 02:05:26 所属栏目:Windows 来源:网络整理
导读:我想我有一个普遍的问题. 我目前正在学习C和SDL 2.0. SDL提供了一个函数,该函数返回指向包含所有键状态的const uint *的指针. 这些是我想要使用的变量: const Uint8* oldKeyState;const Uint8* currentKeyState; 在我的input.cpp的构造中: currentKeyState
我想我有一个普遍的问题.
我目前正在学习C和SDL 2.0. SDL提供了一个函数,该函数返回指向包含所有键状态的const uint *的指针. 这些是我想要使用的变量: const Uint8* oldKeyState; const Uint8* currentKeyState; 在我的input.cpp的构造中: currentKeyState = SDL_GetKeyboardState(&this->length); oldKeyState = currentKeyState; 在Update()方法中我使用: oldKeyState = currentKeyState; currentKeyState = SDL_GetKeyboardState(NULL); 但是,我不是复制最后的值,而是给出一个指向oldKeyState的指针,而oldKeyState又指向当前的keystates. 那么如何将变量指针中的实际值复制到当前和旧的keystate呢?我不希望指针在我的旧密钥状态中,因为我无法检查先前的状态是否为UP且新状态是否为DOWN. 解决方法
你在这里遇到的问题是你试图将指针复制到一个永远不会改变的const数组.因此,您将看到两个指针都转到相同的内存地址,并且您永远不会有两个输入状态副本,它允许您检查按下的键.
相反,您应该使用memcpy将一个数组复制到另一个数组.但是为了做到这一点,你应该将oldKeyState的类型改为Uint8 *,否则你会因为复制到const数组而出错. 所以,代码应该像这样结束: const Uint8 * currentKeyState; Uint8 * oldKeyState; ... //Constructor currentKeyState = SDL_GetKeyboardState(&this->length); oldKeyState = new Uint8[this->length]; ... //Input update memcpy(oldKeyState,currentKeyState,this->length); SDL_PumpEvents(); //Copy the array before calling PumpEvents()! currentKeyState = SDL_GetKeyboardState(NULL); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- windows – 允许用户登录域中的计算机
- Windows – 20Mbps WAN通过IPSec隧道限制为10Mbps
- 如何在Windows上添加自定义url处理程序 喜欢iTunes itms:/
- 超高速多进程操作key为uint32 value为uint32的数据(用于监
- 在Windows上无法预测CUDNN_STATUS_NOT_INITIALIZED
- windows-phone-8 – 在没有SD卡的Windows Phone 8上安装应用
- 完美解决win10家庭版本系统无法远程连接问题(转)
- windows-server-2008-r2 – 供应商建议升级到2016年,我们正
- windows – 句柄关闭后,哪种类型的文件会自行删除?
- 如何在ctypes中传回指针?