我有一个向量aVector
。它从一些内存地址开始,在这种情况下为0x00cff87f
。
我还有一个双D
。
现在,当程序访问上面的D
时,它当然会访问其他地址。
我需要的是当程序访问上面的D
时,指向地址0x00cff87f
,该数组的开头,并将第一个sizeof(double)
字节作为double。
我尝试将指向D
的指针传递给一个函数并切换它,但是只是改变了指针指向的位置,一旦我退出函数,D
保持不变。
基本上,我需要一些方法来告诉程序,从0x00cff87f
开始的四个字节的内存是双倍的,当我要求一个名为D
的双精度来获取该地址的数字时
我在内存中有一个数组需要分解为基本类型,但不是不必要地复制所有内容,我宁愿告诉程序它已经存在的位置。
我该怎么做?
修改:
我有一个无符号字符向量,我想读入其他类型。 C#BinaryReader
可以使用MemoryStream
做的事情。我不知道如何在c ++中做到这一点。只有fstreams,没有一个处理已存在于内存中的(二进制)文件。
答案 0 :(得分:1)
double *p = (double *) &aVector;
我不确定你为什么要这样做,但似乎很有可能有更好的方法来做你想要做的事情,因为打破类型安全和直接访问内存会导致很多怪异问题。