定义函数,并用指针交换两个变量内容(正确版和错误版+错误原因)

简介: 定义函数,并用指针交换两个变量内容(正确版和错误版+错误原因)

正确版:指针法

void swap(int * pa, int * pb)//  void swap(int*pa,int*pb)
{
    int z = 0;
    z = *pa;         //交换的是地址,即数值
    *pa = *pb;       //*pa访问的就是int a,即20
    *pb = z;
}
int main()
{
    int a = 10;
    int b = 20;
    printf("打印前:a=%d b=%d\n", a, b);
    swap(&a, &b);  //      swap(&a,&b)
    printf("打印后:a=%d b=%d\n",a,b);
    return 0;
}

fdfb2e0b44b54680afe384910d53f1b2.png

错误版:

void swap(int x, int y)//重新找变量定义,用xy定义
{
    int z = 0;    //一个函数什么都不返回且不需要返回时,函数类型为void
    z = x;
    x = y;
    y = z;
}
int main()
{
    int a = 10;
    int b = 20;
    printf("打印前:a=%d b=%d\n", a, b);//("a=%d b=%d\n",a,b);
    swap(a, b);//自定义变量swap(a,b)
     printf("打印后:a=%d b=%d\n", a, b);
    return 0;
}

70b199df8c1f4cbeb480d399a8855caf.png


错误代码!!!!!!!!!!!!!!

                因为主函数的a,b有独立空间(字节),,swap函数也有自己的空间(字节),                               主函数可以把数值传给swap函数,但是swap一系列操作,只会改变swap

                不会改变主函数的数值


相关文章
|
2月前
|
存储 C语言 C++
动态内存分配与指向它的指针变量
动态内存分配与指向它的指针变量
22 1
|
2月前
|
C++
定义和使用指向函数的指针变量
定义和使用指向函数的指针变量
15 1
|
1月前
|
搜索推荐 C语言 C++
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现3
【C指针(五)】6种转移表实现整合longjmp()/setjmp()函数和qsort函数详解分析&&模拟实现
|
4天前
|
算法 测试技术 C#
【 贪心 临项交换 多指针】2931. 购买物品的最大开销
【 贪心 临项交换 多指针】2931. 购买物品的最大开销
|
5天前
|
存储 编译器 C语言
【C++】类与对象【定义、访问限定符、this指针】
【C++】类与对象【定义、访问限定符、this指针】
6 1
|
18天前
|
存储 安全 编译器
C语言怎样定义指针变量
C语言怎样定义指针变量
7 0
|
18天前
|
存储 C语言
指针数组作为main函数的形参
指针数组作为main函数的形参
14 0
|
1月前
|
存储 编译器 程序员
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
【C++】类和对象①(什么是面向对象 | 类的定义 | 类的访问限定符及封装 | 类的作用域和实例化 | 类对象的存储方式 | this指针)
|
2月前
|
存储 编译器 C语言
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
【C++练级之路】【Lv.2】类和对象(上)(类的定义,访问限定符,类的作用域,类的实例化,类的对象大小,this指针)
|
2月前
|
安全 C语言 C++
字符指针做函数参数
字符指针做函数参数
10 1