运用函数交换两个整型变量

简介: 运用函数交换两个整型变量
void Swap(int x, int y)
{
  int tmp = 0;
  tmp = x;
  x = y;
  y = tmp;  
}
……
Swap(a,b)

image.png


我们发现a和b并没有交换,因为x和a,y和b的地址不相同,所以x,y交换

a和b并不会改变  

我们要使用指针变量


#include <stdio.h>
void Swap(int* pa, int* pb)
{
  int tmp = 0;
  tmp = *pa;
  *pa = *pb;
  *pb = tmp;
}
int main()
{
  int a = 10;
  int b = 20;
  printf("a=%d b=%d\n", a, b);
  Swap(&a, &b);
  printf("a=%d b=%d\n", a, b);
  return 0;
}

image.png

相关文章
|
3月前
|
C语言 C++
C++ sizeof()运算符的参数为指针和数组的值为什么不同
C++或C语言中,都可以使用sizeof()运算符来计算数组的字节大小,除此之外,在C++和C语言中,都可以使用一个指向数组第一个元素的内存地址的指针来引用数组,因此,如果要计算数组的字节大小,或长度,传递数组本身或传递指向数组的指针给sizeof()运算符似乎都是可以的,实际上则不然,
42 5
|
8月前
不使用第三变量。如何对2个数进行交换
不使用第三变量。如何对2个数进行交换
50 0
|
9月前
|
C语言
C语言:使用函数完成整型数组的打印、元素逆置、初始化
思路: 总体思路: (一). 实现 函数init() -- 初始化数组为全0 (二). 实现 函数print() -- 打印数组的每个元素 (三). 实现 函数reverse() -- 函数完成数组元素的逆置 (四). 完成 主函数 的编写 -- 测试这三个函数
156 0
|
4月前
|
存储 C语言 索引
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
指针详解(const、指针运算、数组名的理解、传址调用和传值调用、一维数组的本质​)(一)
|
4月前
交换两个变量的值
交换两个变量的值
21 0
|
10月前
|
C++
有一个整形数组, a[3] = {7,2,5}, 要求使用指针实现数组成员由小到大的顺序排列,即结果为:a[3] = {2,5,7};(C++指针练习2)
有一个整形数组, a[3] = {7,2,5}, 要求使用指针实现数组成员由小到大的顺序排列,即结果为:a[3] = {2,5,7};(C++指针练习2)
|
11月前
|
数据安全/隐私保护 C语言
【C语言】交换两个int变量的值,不能使用第三个变量
交换两个int变量的值,不能使用第三个变量。即a=3,b=5,交换之后 a=5,b=3
|
编译器
23位与64位区别/指针类型作用/野指针/指针运算/二级指针
23位与64位区别/指针类型作用/野指针/指针运算/二级指针
144 0
23位与64位区别/指针类型作用/野指针/指针运算/二级指针
|
编译器 C语言
指针详细概念知识点及运用,指针与常量,指针的运算,scanf()中的&有什么用?你想知道的,都在这儿~ 1.1.4
f函数里的*p保存了i的地址,在这个函数指向i,此时对*p赋值,也就相当于对i值进行了改变,实现了对外链接,i的值变为了26,就是芥末神奇。此时以*q = 26为例,是可以做的,因为i不是const,i可以赋初值,使 i=26,但因为q是const,所以q++的做法是错误的。表示不能通过p这个指针去修改i这个变量,即*p=26是错误的,不能让 i=26,此时的*p是const。无论指向什么类型,所有指针的大小都是一样的,因为都是地址,但指向不同类型的指针是不能直接相互赋值的。......
指针详细概念知识点及运用,指针与常量,指针的运算,scanf()中的&有什么用?你想知道的,都在这儿~ 1.1.4
指针的运算系列(1):指针加减整数; 指针的比较大小
指针的运算系列(1):指针加减整数; 指针的比较大小
108 0
指针的运算系列(1):指针加减整数; 指针的比较大小