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

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

正确版:指针法

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

                不会改变主函数的数值


相关文章
|
14天前
|
存储 C语言 C++
如何通过指针作为函数参数来实现函数的返回多个值
在C语言中,可以通过将指针作为函数参数来实现函数返回多个值。调用函数时,传递变量的地址,函数内部通过修改指针所指向的内存来改变原变量的值,从而实现多值返回。
|
14天前
|
存储 搜索推荐 C语言
如何理解指针作为函数参数的输入和输出特性
指针作为函数参数时,可以实现输入和输出的双重功能。通过指针传递变量的地址,函数可以修改外部变量的值,实现输出;同时,指针本身也可以作为输入,传递初始值或状态。这种方式提高了函数的灵活性和效率。
|
21天前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
26天前
魔法指针 之 指针变量
魔法指针 之 指针变量
13 1
|
1月前
利用指针函数
【10月更文挑战第2天】利用指针函数。
16 1
|
1月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
23 2
|
1月前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
35 2
|
1月前
|
算法 搜索推荐 C语言
【C语言篇】深入理解指针4(模拟实现qsort函数)
【C语言篇】深入理解指针4(模拟实现qsort函数)
21 2
|
1月前
|
C语言 C++
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
【C语言】指针篇-一篇搞定不同类型指针变量-必读指南(3/5)
|
27天前
|
人工智能
魔法指针 之 指针变量的意义 指针运算
魔法指针 之 指针变量的意义 指针运算
15 0