在C++中将指针转换为数组

Zai*_*zvi 2 c++ arrays pointers memory-mapping

CreateFileMapping函数返回一个指向内存映射文件的指针,我想将该内存映射视为一个数组.

这是我基本上想做的事情:

char Array[] = (char*) CreateFileMapping(...);
Run Code Online (Sandbox Code Playgroud)

除了显然我不能简单地挥动手臂并声明指针现在是一个数组.

你们有什么想法我能做到这一点吗?我不想将指针指向的值复制到数组中,因为这会对大文件使用太多内存.

谢谢一堆,

Pav*_*aev 22

你不需要.您可以将指针索引为数组:

char* p = (char*)CreateFileMapping(...);
p[123] = 'x';
...
Run Code Online (Sandbox Code Playgroud)


Wil*_*ill 5

在C/C++中,指针和数组不是一回事.

但在你的情况下,为了你的目的,他们是.

你有一个指针.

你可以给它一个下标.

例如,一个char*指针指向"你好"的开头

指针[0]是第一个字符'h'

指针[1]是第二个字符'e'

所以只要在考虑数组时就对待它.

  • 更具体地说,在C/C++中,数组_decay_指向_在某些上下文中.不总是. (8认同)
  • @ dnh828,你错了.尝试在数组上使用`sizeof`和使用"相同"类型的指针.或者将一个数组分配给另一个.指向数组的指针也与指向指针的指针不同.等等. (4认同)
  • 对于语言,指针和数组是相同的.数组是指向系列中第一个对象的指针. (2认同)