我有一个固定大小的数组,我想“左移”它。
例如 {1,2,3,4} --> {2,3,4}
根据我的理解,数组是连续的内存单元,因此只需更改起始指针就可以实现这一点。
这在C语言中可能吗?
我试过了
array = &array[1];
但是我明白了
error: assignment to expression with array type
我可以做
char* array1;
array1 = &array2[1];
并使用 array1,但这会引入另一个变量和 id,如果可能的话,使用更少的内存
pointer arithmetic
来实现这一点
在您提供的示例案例中,将实现为:
// asuming ptr is a pointer to the first element of the array;
[type] ptr = ptr + 1;
// this is syntactic sugar for:
[type] ptr = ptr + sizeof(*ptr);
但是...我建议你不要这样做,因为它非常容易出错