将数组a中n个整数按相反顺序存放,用指针变量作实参 用c语言
时间: 2024-03-25 08:39:58 浏览: 122
要将数组a中的n个整数按相反顺序存放,可以使用指针变量作为函数的实参,以便能够在函数内部修改数组的值。以下是一个示例函数的实现:
```c
void reverse(int *a, int n) {
int *p = a;
int *q = a + n - 1;
int temp;
while (p < q) {
temp = *p;
*p = *q;
*q = temp;
p++;
q--;
}
}
int main() {
int a[5] = {1, 2, 3, 4, 5};
reverse(a, 5);
for (int i = 0; i < 5; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
在上面的代码中,reverse函数的参数包括一个整型指针a和一个整数n,指定数组中元素的数量。在函数内部,我们定义了两个指针变量p和q,分别指向数组的第一个元素和最后一个元素。然后,使用一个临时变量temp来交换p和q指向的元素的值,直到p指针到达q指针的位置。
在main函数中,我们使用一个包含5个整数的数组a来测试reverse函数。我们将数组a传递给reverse函数,并将数组中的元素按相反顺序存放。最后,我们使用一个for循环遍历数组a并打印出每个元素的值。
相关问题
将数组a中8个整数按相反顺序存放,用指针变量作实参。要求用C语言编程。
以下是将数组a中8个整数按相反顺序存放的C语言代码:
```
#include <stdio.h>
void reverse_array(int *p, int size) {
int temp;
for(int i = 0; i < size/2; i++) {
temp = *(p+i);
*(p+i) = *(p+size-1-i);
*(p+size-1-i) = temp;
}
}
int main() {
int a[8] = {1, 2, 3, 4, 5, 6, 7, 8};
reverse_array(a, 8);
for(int i = 0; i < 8; i++) {
printf("%d ", a[i]);
}
return 0;
}
```
在main函数中,我们定义了一个长度为8的整型数组a,并将其初始化为{1, 2, 3, 4, 5, 6, 7, 8}。我们将数组a的地址和数组长度作为参数传递给reverse_array函数。
在reverse_array函数中,我们使用一个循环来遍历数组的前一半元素,并交换每一对元素的值。我们使用指针变量p来访问数组元素的值。最后,当循环结束后,数组a中的元素就被按相反顺序存放了。
在main函数中,我们再次遍历数组a,输出结果为{8, 7, 6, 5, 4, 3, 2, 1}。
将数组中n个整数按相反顺序存放,用指针变量做实参 c语言
可以使用指针变量作为实参,通过指针操作实现将数组中n个整数按相反顺序存放的功能。
以下是示例代码:
```c
#include <stdio.h>
void reverse(int *arr, int n) {
int *p1 = arr;
int *p2 = arr + n - 1;
while (p1 < p2) {
int temp = *p1;
*p1 = *p2;
*p2 = temp;
p1++;
p2--;
}
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int n = sizeof(arr) / sizeof(int);
printf("Before reverse: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
reverse(arr, n);
printf("After reverse: ");
for (int i = 0; i < n; i++) {
printf("%d ", arr[i]);
}
printf("\n");
return 0;
}
```
在这个示例中,reverse 函数接受两个参数,第一个参数是指向数组的指针,第二个参数是数组的长度。函数内部使用两个指针 p1 和 p2 分别指向数组的开头和结尾,然后交换它们所指向的元素,直到 p1 和 p2 相遇为止,即完成了数组元素的反转。在 main 函数中,先输出原数组,然后调用 reverse 函数,再输出反转后的数组。
阅读全文