如何用指针算法判断我在数组中的位置?

Fed*_*oca 4 c pointers

在C中,我声明了一个这样的内存区域:

int cells = 512;
int* memory = (int*) malloc ((sizeof (int)) * cells);
Run Code Online (Sandbox Code Playgroud)

我或多或少地把自己放在中间

int* current_cell = memory + ((cells / 2) * sizeof (int));
Run Code Online (Sandbox Code Playgroud)

我的问题是,当我增加时*current_cell,我怎么知道我是否到达了分配的内存区域的末尾?

Bil*_*nch 6

if (current_cell >= memory + cells)
   no_longer_in_valid_memory;
Run Code Online (Sandbox Code Playgroud)

然而!您的代码中存在大问题.如果您希望current_cell位于内存区域中间附近,您应该实际执行此操作:

int* current_cell = memory + (cells / 2);
Run Code Online (Sandbox Code Playgroud)

指针算术将负责乘以sizeof(int).