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

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

正确版:指针法

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

                不会改变主函数的数值


相关文章
|
26天前
|
存储 人工智能 算法
数据结构实验之C 语言的函数数组指针结构体知识
本实验旨在复习C语言中的函数、数组、指针、结构体与共用体等核心概念,并通过具体编程任务加深理解。任务包括输出100以内所有素数、逆序排列一维数组、查找二维数组中的鞍点、利用指针输出二维数组元素,以及使用结构体和共用体处理教师与学生信息。每个任务不仅强化了基本语法的应用,还涉及到了算法逻辑的设计与优化。实验结果显示,学生能够有效掌握并运用这些知识完成指定任务。
47 4
|
1月前
|
存储 编译器 Linux
【c++】类和对象(上)(类的定义格式、访问限定符、类域、类的实例化、对象的内存大小、this指针)
本文介绍了C++中的类和对象,包括类的概念、定义格式、访问限定符、类域、对象的创建及内存大小、以及this指针。通过示例代码详细解释了类的定义、成员函数和成员变量的作用,以及如何使用访问限定符控制成员的访问权限。此外,还讨论了对象的内存分配规则和this指针的使用场景,帮助读者深入理解面向对象编程的核心概念。
79 4
|
2月前
|
存储 C语言 C++
如何通过指针作为函数参数来实现函数的返回多个值
在C语言中,可以通过将指针作为函数参数来实现函数返回多个值。调用函数时,传递变量的地址,函数内部通过修改指针所指向的内存来改变原变量的值,从而实现多值返回。
|
2月前
|
存储 搜索推荐 C语言
如何理解指针作为函数参数的输入和输出特性
指针作为函数参数时,可以实现输入和输出的双重功能。通过指针传递变量的地址,函数可以修改外部变量的值,实现输出;同时,指针本身也可以作为输入,传递初始值或状态。这种方式提高了函数的灵活性和效率。
|
2月前
|
存储 C语言
C语言指针与指针变量的区别指针
指针是C语言中的重要概念,用于存储内存地址。指针变量是一种特殊的变量,用于存放其他变量的内存地址,通过指针可以间接访问和修改该变量的值。指针与指针变量的主要区别在于:指针是一个泛指的概念,而指针变量是具体的实现形式。
|
2月前
魔法指针 之 指针变量
魔法指针 之 指针变量
16 1
|
2月前
利用指针函数
【10月更文挑战第2天】利用指针函数。
19 1
|
2月前
|
存储 编译器 C语言
C++入门2——类与对象1(类的定义和this指针)
C++入门2——类与对象1(类的定义和this指针)
40 2
|
2月前
|
C++
析构造函数就是为了释放内存,就是在局部指针消失前释放内存,拷贝构造函数就是以构造函数为模块,在堆里面新开一块,同一个变量在堆里面的地址
本文讨论了C++中构造函数和析构函数的作用,特别是它们在管理动态内存分配和释放中的重要性,以及如何正确地实现拷贝构造函数以避免内存泄漏。
40 2
|
2月前
|
算法 搜索推荐 C语言
【C语言篇】深入理解指针4(模拟实现qsort函数)
【C语言篇】深入理解指针4(模拟实现qsort函数)
25 2