void
创新互联公司主要从事网站建设、成都做网站、网页设计、企业做网站、公司建网站等业务。立足成都服务大荔,十载网站建设经验,价格优惠、服务专业,欢迎来电咨询建站服务:13518219792
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;
}
1、首先,就是最基本的知识,写头文件、函数声明、定义变量。
2、下面还需要定义指针,需要定义两个指针p1和p2,然后把a的地址赋值给p1,把b的地址赋值给p2。
3、然后就是调用函数,该函数没有返回值,就直接调用,但是参数进入的是a和b的地址,而不是a和b。
4、函数点用完之后,就是输出a和b的值看一看是否互换了。
5、首先,a和b的地址传给x和y,通过指针直接对a和b的值进行操作。
6、最后,就是调换*x和*y的值,这样就是实现了a和b的值。
#include"stdio.h"int swap(int *a,int *b){int temp;temp=*a;*a=*b;*b=temp;}
main(){int x,y;printf("请输入x与y的值,用空格隔开\n");scanf("%d%d",x,y);printf("x=%d,y=%d\n",x,y);swap(x,y);printf("交换后\nx=%d,y=%d\n",x,y);}
扩展资料:
C语言是一门通用计算机编程语言,广泛应用于底层开发。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。
尽管C语言提供了许多低级处理的功能,但仍然保持着良好跨平台的特性,以一个标准规格写出的C语言程序可在许多电脑平台上进行编译,甚至包含一些嵌入式处理器(单片机或称MCU)以及超级电脑等作业平台。
二十世纪八十年代,为了避免各开发厂商用的C语言语法产生差异,由美国国家标准局为C语言制定了一套完整的美国国家标准语法,称为ANSI C,作为C语言最初的标准。目前2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言是一门面向过程的计算机编程语言,与C++,Java等面向对象的编程语言有所不同。其编译器主要有Clang、GCC、WIN-TC、SUBLIME、MSVC、Turbo C等。
参考资料:百度百科-C语言
不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下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语言函数参数的基本规则是值传递,所以传递时只能实现实参向形参的单向的、值的传递。这就是为什么需要使用指针才能实现值交换的原因。