更改 C 中的数组指针

问题描述 投票:0回答:1

我有一个固定大小的数组,我想“左移”它。

例如 {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,如果可能的话,使用更少的内存

arrays c pointers compiler-optimization
1个回答
0
投票

可以通过使用

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);

但是...我建议你不要这样做,因为它非常容易出错

© www.soinside.com 2019 - 2024. All rights reserved.