我试图从一开始移动浮点数组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 *')
我怎样才能做到这一点?
答案 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
来移动整个数组。