不用指针写一个swap函数
时间: 2023-10-18 19:46:21 浏览: 134
当然可以!以下是一个不使用指针的swap函数示例:
```c
#include <stdio.h>
void swap(int a, int b) {
int temp = a;
a = b;
b = temp;
}
int main() {
int x = 10, y = 20;
printf("Before swapping: x = %d, y = %d\n", x, y);
swap(x, y);
printf("After swapping: x = %d, y = %d\n", x, y);
return 0;
}
```
这个swap函数使用传值方式将参数a和b复制到新的变量中,然后交换这两个新变量的值。在主函数中,我们定义了两个变量x和y,并调用swap函数来交换它们的值。然而,由于参数是按值传递的,所以在swap函数内部交换的只是新变量的值,而不会影响到原来的变量。因此,输出将仍然是:
```
Before swapping: x = 10, y = 20
After swapping: x = 10, y = 20
```
请注意,这种方法无法实现真正的交换效果。要在不使用指针的情况下交换变量的值,可能需要引入其他的技巧或数据结构。但是,使用指针是更常见和方便的方法。如果你有任何进一步的问题,请随时提问!
相关问题
用c语言写一个swap函数
当然可以!以下是一个用C语言编写的swap函数示例:
```c
#include <stdio.h>
void swap(int* a, int* b) {
int temp = *a;
*a = *b;
*b = temp;
}
int main() {
int x = 10, y = 20;
printf("Before swapping: x = %d, y = %d\n", x, y);
swap(&x, &y);
printf("After swapping: x = %d, y = %d\n", x, y);
return 0;
}
```
这个swap函数使用指针作为参数,通过交换指针所指向的值来实现两个变量的交换。在主函数中,我们定义了两个变量x和y,并调用swap函数来交换它们的值。最后,打印交换后的结果。运行程序后,输出将是:
```
Before swapping: x = 10, y = 20
After swapping: x = 20, y = 10
```
希望这个例子能帮助到你!如果有任何疑问,请随时提问。
二级指针实现swap函数
使用二级指针实现swap函数的代码如下所示:
```c
#include <stdio.h>
void swap(int **p1, int **p2){
int *temp = *p1;
*p1 = *p2;
*p2 = temp;
}
int main(){
int a = 66, b = 99;
int *q1 = &a, *q2 = &b;
swap(&q1, &q2);
printf("*q1 = %d, *q2 = %d\n", *q1, *q2);
return 0;
}
```
在这段代码中,我们首先定义了一个swap函数,其参数为两个指向指针的二级指针p1和p2。在函数内部,通过中间变量temp来保存p1所指向的值,然后将p1指向p2所指向的值,再将p2指向temp所保存的值,即实现了两个指针指向值的交换。
在主函数中,我们定义了两个整型变量a和b,并分别赋值为66和99。然后创建了两个指向a和b的指针q1和q2。接着,我们调用swap函数,并将q1和q2的地址作为参数传递给swap函数,从而实现了对q1和q2所指向的值进行交换。最后,通过打印*q1和*q2的值,我们可以看到交换后的结果。
运行以上代码,输出结果为:*q1 = 99, *q2 = 66。这表明二级指针实现的swap函数成功地交换了两个指针所指向的值。
阅读全文