C语言用指针实现数组元素循环移动
时间: 2024-12-20 16:16:47 浏览: 72
在C语言中,使用指针可以方便地实现数组元素的循环移动。假设我们有一个整型数组`arr`,我们可以创建一个新的数组`new_arr`,并使用两个指针,一个指向原数组`arr`的开始位置,另一个指向`new_arr`的当前插入位置。
下面是一个简单的例子,将数组的每个元素向右移动k个位置:
```c
void circularShift(int arr[], int n, int k) {
int *start = arr; // 指向原数组的第一个元素
int *end = start + n - 1; // 指向原数组的最后一个元素
// 如果k大于n,我们将只移动一次数组
if (k >= n) {
k %= n;
}
// 使用while循环,每次将start指针移动k个位置,并把*start的值复制到end指针所指的新位置
while (k > 0) {
*end = *(start + k); // 将起始位置的元素复制到末尾
end--; // 移动end指针
start += k; // 移动start指针
k--;
}
}
// 示例
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(arr[0]);
int k = 2;
circularShift(arr, n, k);
// 打印新数组
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
return 0;
}
```
运行上述程序后,原数组会变为`{3, 4, 5, 1, 2}`。
阅读全文
相关推荐



















