定义函数式宏(type,a,b)交换type型两值
时间: 2023-04-02 20:02:39 浏览: 145
可以这样定义函数式宏:
#define swap(type, a, b) { type temp = a; a = b; b = temp; }
其中,type 表示数据类型,a 和 b 分别表示要交换的两个值。使用时,可以这样调用:
int x = 1, y = 2;
swap(int, x, y);
调用后,x 的值为 2,y 的值为 1。
相关问题
宏定义函数两个数交换
可以使用宏定义函数来实现两个数的交换。下面是一个示例:
```c
#include <stdio.h>
#define SWAP(a, b) do { \
typeof(a) temp = (a); \
(a) = (b); \
(b) = temp; \
} while(0)
int main() {
int x = 10;
int y = 20;
printf("Before swap: x = %d, y = %d\n", x, y);
SWAP(x, y);
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
```
在上面的示例中,我们使用了宏定义函数 `SWAP` 来交换两个数的值。在宏定义中,我们使用了 `do { ... } while(0)` 结构来确保宏定义函数的语法正确。`typeof(a)` 是用来获取变量 `a` 的类型,这样可以在交换值时保持类型一致。
运行上述代码,输出会是:
```
Before swap: x = 10, y = 20
After swap: x = 20, y = 10
```
这样就成功地通过宏定义函数实现了两个数的交换。
-5 指针——数据交换 定义函数交换两个外部变量的值
可以通过指针来交换两个外部变量的值。
以下是一个示例代码:
```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 swap: x = %d, y = %d\n", x, y);
swap(&x, &y); // 传递 x 和 y 的地址
printf("After swap: x = %d, y = %d\n", x, y);
return 0;
}
```
在这个示例中,我们定义了一个 `swap` 函数,它接受两个 `int` 类型的指针参数。在函数内部,我们使用 `*` 运算符来访问指针指向的值,然后通过 `temp` 变量来交换两个值。在主函数中,我们声明了两个变量 `x` 和 `y`,并将它们的地址传递给 `swap` 函数,以便在函数内部交换它们的值。最后,我们打印出交换后的结果。