当前位置:首页 » 编程语言 » c语言交换地址能实现数据交换么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言交换地址能实现数据交换么

发布时间: 2023-05-13 12:22:24

⑴ 用c语言实现从a到b的数据交换(不能使用第三个寄存器)

两个数交换应该有两种方法:一种是交换它们所指的地址,一种是交换它们的值。

从你的int *t=a;看你把a的地址先保存,应该是想交换他们的地址达到交换两数的目的。但要改变指针所指向的地址需要用二级指针(自已可以仔细理解下),所以你应该这样写才是交换他们的地址:
void swap( int **a, int **b)
{
int *t= *a;
*a= *b;
*b= t;
}
上面这个函数调用有点麻烦:
int x=9,y=0;
int *p1= &x;
int *p2= &y;
swap( &p1, &p2);

如果是交换地址所指向的地址的内容用一级指针就可以了。
void swap( int *a, int *b)
{
int t=*a;
*a= *b;
*b=t;
}
这种调用也很简单
int x, y;
swap( &x, &y);

⑵ c语言怎么实现两个数据交换

将两个数进行互换的方法有两种形式:
1、借助中间变量完成,此方法直观,易理解,使用最多
2、不需要中间变量,通过变量身的运算完成交换。

⑶ 5、使用C语言编写一个函数,用于交换两个变量的值(地址传递)。

不知道你要交换的两个变量类型,所以这里以整型数据交换为例,以下swap函数实现了交换两个整型变量值的功能:

#include<stdio.h>

//交换给定指针指向整型变量的值。
//参数:
// a->指向第一个变量的指针
// b->指向第二个变量的指针
voidswap(int*a,int*b);

intmain(intargc,intargv)
{
inta=3,b=5;
printf_s("交换前:a=%d,b=%d ",a,b);
swap(&a,&b);
printf_s("交换后:a=%d,b=%d ",a,b);
return0;
}

//交换给定指针指向整型变量的值。
//参数:
// a->指向第一个变量的指针
// b->指向第二个变量的指针
voidswap(int*a,int*b)
{
//声明一个临时变量,保存第一个指针指向变量
//的值。
//其中*a是取出a指针指向变量的值
inttemp=*a;
//将b指针指向的值赋值给a指针指向变量
(*a)=(*b);
//将临时变量temp中保存的a指针指向变量的值赋值给
//b指针指向的变量。
(*b)=temp;
}

以上代码运行结果如下:

⑷ c语言交换两个数的问题

两段代码的差异是:

第一段代码:将a、b两个数的地址传入swap()函数,此函数内部拿着这两个数的地址,将两个地址下的值做了交换;

第二段代码:将a、b两个数的地址传入swap()函数,此函数内部将这两个地址彼此做了交换(即两个指针所指的地址发生了互换,但相应地址下的数并没有变化)。因为对于函数swap()来说,传入的两个地址是值传递形式的,在其内部是局部作用域下的两个变量,完成这两个地址“值”的交换,并不能对调用时的实参产生影响。故而交换失败。


另外,再给你个无需中间变量交换两个数值的写法:

a = b - a + (b = a); // 无需中间变量交换a、b的值

⑸ C语言指针实现数据交换

void swap(int *x,int *y) x,y是地址

temp = *x; //temp的值是x地址指向的值

这么理解就明白了。

int a;
int *a2;
a = 5;
a2=&a;
*a2 = 6;
运行到这里a就是等于6,有没有明白呢。