gpt4 book ai didi

c++ - 我是否正确理解指针? C++

转载 作者:行者123 更新时间:2023-11-30 01:19:06 25 4
gpt4 key购买 nike

我正在学习 C++ 中的指针,我已经阅读了一篇关于它的文章,我想我理解了它,尽管我只是想对我编写的伪代码进行一些澄清。

int someGameHealthAddress = 1693;
int healthIWantItToBe = 20;
int * newHealthValue;

newHealthValue = someGameHealthAddress;
*newHealthValue = healthIWantItToBe;

那么上面说的对吗?喜欢它的工作方式吗?

编辑:谢谢大家的回答,很高兴我现在记下来了。你帮了大忙 :)EDIT2:我很自豪我现在已经掌握了窍门。看起来很多人都难以理解指针。

最佳答案

如果 someGameHealthAddress 应该是一个地址,那么您需要这样声明它。例如:

int someGameHealth = 1693;
int healthIWantItToBe = 20;
int * someGameHealthAddress; //this is the pointer to an int, which is basically its address

someGameHealthAddress = &someGameHealth; // take address of someGameHealth
*someGameHealthAddress = healthIWantItToBe; // modify the value it points to

在你的代码中,这一行是错误的:

newHealthValue = someGameHealthAddress;

因为它不匹配变量的类型,所以就像int* = int

请注意,这可以从整数类型转换为指针类型,这几乎总是一个错误,因为您几乎永远不知道内存中变量地址的绝对值。你通常会找到一些东西,然后使用相对偏移量。当您进行一些内存中的黑客攻击时,通常就是这种情况,您的示例似乎就是这种情况。

关于c++ - 我是否正确理解指针? C++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21433610/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com