重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下swap函数实现了交换两个整型变量值的功能:
公司主营业务:成都做网站、网站建设、外贸营销网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。成都创新互联公司是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。成都创新互联公司推出达川免费做网站回馈大家。
#include stdio.h
// 交换给定指针指向整型变量的值。
// 参数:
// a - 指向第一个变量的指针
// b - 指向第二个变量的指针
void swap(int* a, int * b);
int main(int argc, int argv)
{
int a = 3, b = 5;
printf_s("交换前:a = %d, b = %d\n", a, b);
swap(a, b);
printf_s("交换后:a = %d, b = %d\n", a, b);
return 0;
}
// 交换给定指针指向整型变量的值。
// 参数:
// a - 指向第一个变量的指针
// b - 指向第二个变量的指针
void swap(int* a, int* b)
{
// 声明一个临时变量,保存第一个指针指向变量
// 的值。
// 其中 *a 是取出 a 指针指向变量的值
int temp = *a;
// 将 b 指针指向的值赋值给 a 指针指向变量
(*a) = (*b);
// 将临时变量 temp 中保存的 a 指针指向变量的值赋值给
// b 指针指向的变量。
(*b) = temp;
}
以上代码运行结果如下:
以下代码实现了使用宏定义作为模板,声明不同类型交换函数的功能,以下以声明double和float为例:
#include stdio.h
// 声明一个函数代码模板,逻辑参考 swap(int* a, int* b)
#define DEF_SWAP_FUNC(Type) void swap_##Type(Type* a, Type* b) \
{ \
Type temp = (*a); \
(*a) = (*b); \
(*b) = temp; \
}
// 使用模板声明并实现一个 double 类型变量交换函数,函数名为 swap_double
DEF_SWAP_FUNC(double)
// 使用模板声明并实现一个 float 类型变量交换函数,函数名为 swap_float
DEF_SWAP_FUNC(float)
int main(int argc, int argv)
{
// double 类型数据交换
double da = 5.6, db = 3.5;
printf_s("double 交换前:da = %lf, db = %lf\n", da, db);
swap_double(da, db);
printf_s("double 交换后:da = %lf, db = %lf\n", da, db);
// float 类型数据交换
float fa = 3.4, fb = 6.8;
printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);
swap_float(fa, fb);
printf_s("float 交换前:fa = %f, fb = %f\n", fa, fb);
return 0;
}
运行结果如下:
/*
编写c语言程序,实现交换两个变量值的操作。
要求:使用形参为指针的函数swap完成交换功能。
主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换
输出交换前后的变量值进行比较。
输入输出示例:
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3
*/
//File: swap.c
#include stdio.h
#include stdlib.h
void swap(int *a, int *b)
{
int tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
int main()
{
int *a=NULL,*b=NULL;
a=(int *)calloc(1,sizeof(int));
if(!a)
{
perror("calloc a err.");
}
b=(int *)calloc(1,sizeof(int));
if(!b)
{
perror("calloc b err.");
}
printf("Input two number:");
scanf("%d %d",a,b);
printf("Before change:a=%d,b=%d\n",*a,*b);
swap(a,b);
printf("After change:a=%d,b=%d\n",*a,*b);
return 0;
}
C:\myprogcc -g -Wall swap.c -o swap
C:\myproswap
Input two number:3 4
Before change:a=3,b=4
After change:a=4,b=3
C:\mypro
程序已调好,直接运行即可。
swap函数一般是一个程序员自定义函数,是实现两个变量数值的交换。
1、比如:
int a = 2;
int b =3;
swap(a,b); //一般用到变量数值交换,交换后a=3 b = 2;
2、通过使用临时变量实现交换。
void swap1(int x,int y)
{
int temp;
temp=x;
x=y;
y=temp;
}
扩展资料
C语言swap函数的使用
#includestdio.h
void swap(int *pa,int *pb)
{
int temp;
temp=*pa,*pa=*pb,*pb=temp;
}
void main()
{
int a=10,b=20;
swap(a,b);//传递的是实参变量a,b的地址
printf("a=%d,b=%d\n",a,b);
}
要交换任意变量 那么就只能通过指针来进行
不考虑变量类型,而直接交换值。
需要三个参数,两个变量地址,以及变量所占的空间。
赋值可以用memcpy
代码如下:
void super_swap(void * a, void *b, int size)
{
void *p = malloc(size);
memcpy(p, a, size);
memcpy(a,b,size);
memcpy(b,p,size);
free(p);
}
#include stdio.h
void swap_1(int*a,int*b)//方法一,定义临时变量
{
int temp=*a;
*a=*b;
*b=temp;
}
void swap_2(int*a,int*b)//方法二,利用加减法运算
{
*a=*a+*b;
*b=*a-*b;
*a=*a-*b;
}
void swap_3(int*a,int*b)//方法三,利用位运算
{
*a=*a^*b;
*b=*a^*b;
*a=*a^*b;
}
int main()
{
int x,y;
scanf("%d%d",x,y);
printf("x=%d,y=%d\n",x,y);
swap_1(x,y);//或swap_2(x,y);或swap_3(x,y);
printf("x=%d,y=%d\n",x,y);
return 0;
}
void
swap(int
*a,int*
b)
{
int
temp=0;
temp=*a;
*a=*b;
*b=temp;
}
因为是指针,只要更换指针内的内容就可以了;
还有一种是
换指针,就设a指向没存A,b指向内存B,交换后把b指向内存A,把a指向内存B
void
swap(int
*a,int*
b)
{
int
*temp;
temp=a;
a=b;
b=temp;
}