增量浮点数组ptr

时间:2010-09-05 13:25:20

标签: c arrays pointers

我试图从一开始移动浮点数组ptr 256“单位”所以(256 * 4字节)浮点数。 我收到编译时错误。

long new_capture_length = 4096;
long step_size = 256;
float data[new_capture_length];
data+=step_size;

错误:无效操作数到二进制+(有'float [(long unsigned int)(new_capture_length)]'和'float *')

我怎样才能做到这一点?

3 个答案:

答案 0 :(得分:4)

你不能“移动”一个数组。您可以将指针移动到数组中,例如:

long new_capture_length = 4096;
long step_size = 256;
float data[new_capture_length];
float* p_data = &data[0];

p_data+=step_size; /* p_data now points 256 floats into data, i.e. to data[256]  */

data本身的位置永远不会改变,因为它不是指针。

我最近对一个非常相似的问题做了一个更详细的回答:C Pointer Question(我不喜欢称“这个代码有什么问题”类型问题完全重复,即使它们有相同的根本问题)

答案 1 :(得分:0)

如果您想要这样做,可以使用memmove()来移动数据。

答案 2 :(得分:0)

在某些情况下,数组可以用作指针,但不是全部。这是你不能做到的。你不能像指针一样“移动”数组。你必须说float* ptr = data + step size(如果你想要的只是一个指针)或使用memmove来移动整个数组。