讲解指针循环右移数组元素
时间: 2023-12-14 08:34:06 浏览: 167
指针是C语言中的一种重要数据类型,它存储了一个变量的内存地址。通过指针,我们可以直接访问和修改内存中的数据,这在数组操作中非常有用。下面是一个指针循环右移数组元素的例子:
```c
#include <stdio.h>
void rightShift(int *arr, int n, int k){
k %= n; // 处理k大于n的情况
if(k == 0) return; // 特判k等于0的情况
int tmp[k];
for(int i = n - k; i < n; i++){
tmp[i - n + k] = arr[i];
}
for(int i = n - k - 1; i >= 0; i--){
arr[i + k] = arr[i];
}
for(int i = 0; i < k; i++){
arr[i] = tmp[i];
}
}
int main(){
int arr[10] = {1, 2, 3, 4, 5, , 7, 8, 9, 10};
int n = 10, k = 3;
printf("Before shift: ");
for(int i = 0; i < n; i++){
printf("%d ", arr[i]);
}
printf("\n");
rightShift(arr, n, k);
printf("After shift: ");
for(int i = 0; i < n; i++){
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
上述代码中,`rightShift`函数实现了将数组循环右移k位的功能。首先处理k大于n的情况,然后将后k个元素存入临时数组tmp中,再将前n-k个元素向后移动k位,最后将tmp中的元素放回前k个位置。在主函数中,我们定义了一个长度为10的数组arr,并将其初始化为1到10的整数。然后调用`rightShift`函数将数组循环右移3位,并输出移动前后的数组元素。
阅读全文