动态数组改变内存地址位置
Dynamic array changing memory address locations
我有一个小问题,不太理解我想要做的语法。见下文:
float* ParticleSystem::GetMinLifeTime()
{
return &minLifeTime;
}
我想声明一个动态数组,然后改变元素0的值指向minLifeTime内存位置。到目前为止,我的尝试是:
float* lifeTimeNumbers = new float[LIFETIME_STRINGS_SIZE];
lifeTimeNumbers[0] = *activeParticleSystem->GetMinLifeTime();
我的理解是,当我将它们添加到数组中时,我正在解引用这些值。这不是我想要的。我真的想把lifeTimeNumbers[0]的内存位置更改为GetMinLifeTime()返回的内存位置。我能做这样的事吗?
欢呼
你不能改变数组[0]的地址,因为数组基本上是一个内存区域,而不是一个数字,也不是单个指针。
你的"问题"可以用**..然后可以让[0]存储指向值
你的问题主要是关于如何解决方法Y实现x的问题。
方法Y确实没有意义(这被称为 xy问题)。
与其关注Y,不如直接做X:
#include <vector>
double ParticleSystem::minLifeTime() const
{
return minLifeTime_;
}
int main()
{
std::vector<double> lifeTimeNumbers;
ParticleSystem activeParticleSystem = ...;
lifeTimeNumbers.push_back( activeParticleSystem.minLifeTime() );
}
我真的想把lifeTimeNumbers[0]的内存位置更改为GetMinLifeTime()返回的内存位置
你所需要做的就是:
float *lifeTimeNumbers = activeParticleSystem->GetMinLifetime();
现在你有一个指针指向数组的第一个元素。
您需要的是指向浮点数的指针数组,而不是浮点数数组。要实现这一点,你必须像这样声明数组
float** lifeTimeNumbers = new float*[LIFETIME_STRINGS_SIZE];
lifeTimeNumbers[0] = activeParticleSystem->GetMinLifeTime();
但是为什么不直接使用像这样的vector容器呢
std::vector<float*> vec;
vec.push_back(activeParticleSystem->GetMinLifeTime());
相关文章:
- 将数组的地址分配给变量并删除
- 空基优化子对象的地址
- 将值指定给向量(2D)的向量中的某个位置
- C++ 指针的内存地址和指向数组的内存地址如何相同?
- 使用Unreal C++获取VR耳机的世界位置/方向
- 写入位置0x0000000C时发生访问冲突
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 在C++中打印指向不同基元数据类型的指针的内存地址
- 如何在c++程序中找到函数的地址
- 为什么在递增后使用 [] 运算符访问指针数组会返回错误地址的当前内存位置
- 相同地址位置如何给出两个不同的值
- 明确分配或从内存中的特定地址/位置分配或访问值
- 在双链表中,指针不是存储彼此的地址,而是指向相同的位置
- 虚拟内存地址所在的位置
- Vpointer 在 C++ 中的地址和位置
- 如何判断共享库在进程地址空间中的加载位置
- 获取地址在数组2d中的位置
- c++存储数组下一个位置的地址
- 动态数组改变内存地址位置
- PC的IP地址到位置坐标