首页 > 编程语言 >数据结构与算法学习(01)交换函数的指针陷阱

数据结构与算法学习(01)交换函数的指针陷阱

时间:2024-03-13 13:58:49浏览次数:24  
标签:01 temp int px py swap 数据结构 void 指针

先看以下正确的例子 

void swap ( int *px, int *py)
{
    int temp;
    temp = *px;  /*间接取*/
    *px = *py;	/*间接取,间接存*/
    *py = temp;	/*间接存*/
}

int main(void)
{
    int a =2, b = 3;
    swap ( &a, &b);
    printf("a=%d,b=%d",a,b);
    return 0;
}

 运行的结果为

 但是,如果将swap函数变为

void swap(int *px, int *py)
{
    int *temp;
    temp = px;
    px = py;
    py = temp;
}

便不能进行交换

事实上,当我们进行调试的时候会发现第二种方法交换的只是两个数所在的地址,并没有交换数值。

相当于,换了门牌号,但是住在门里的人是没有变的。

 

标签:01,temp,int,px,py,swap,数据结构,void,指针
From: https://blog.csdn.net/cjh_cr7/article/details/136677780

相关文章

  • [C++]C++函数指针总结
    指针的概念指针是一个特殊的变量,它里面存储的数值被解释成为内存里的一个地址。要搞清一个指针需要搞清指针的四方面的内容:指针的类型,指针所指向的类型,指针的值或者叫指针所指向的内存区,还有指针本身所占据的内存区。让我们分别说明。先声明几个指针放着做例子:例一:int*......
  • 数据结构算法系列----背包问题(01,完全,多重)
    一、01背包1、01背包介绍    "01背包"是一个经典的动态规划问题。在01背包中,给定一个背包容量和一组物品,每个物品都有自己的重量和价值。问题的目标是选择一些物品放入背包中,使得放入的物品总重量不超过背包容量,同时使得放入的物品总价值最大。    "01"表......
  • 数据结构算法系列----快速幂
    一、快速幂的介绍:1、为什么要使用快速幂:   当我们计算a的n次幂时,最先想到的肯定是c中的内置函数  pow(a,n),这个内置函数虽然简单方便,但是在实际使用中这个函数的时间复杂度是o(n),因为它是将a乘n次得到的答案。  由于在n非常大时用pow()很容易超时,因此我们引入一个时......
  • 01-列表操作-使用slice()命名切片,增强程序可读及可维护性,兼使用indices()方法,防止出现
    程序中的切片,使用原始的索引访问时,如果数量过多,时间久了,就会导致难以阅读和维护。但使用slice()函数,创建【命名切片】后,赋予了切片与现实相近的名称,让程序更容易理解。同时,slice类中的indices方法,返回start,stop,step,3个值组成的元组。并且indices()对3个值进行自动调整,确......
  • 01-deque类-双端队列-完全解读
    1 deque类的适用场景1.1适用场景deque并非列表的完美替代,一般情况下,它最适用于:1.1 左入右出,或者,右入左出的数据结构。    只通过对其两端数据的操作,实现压入和弹出。比如:简单的堆栈1.2 创建有限长度的数据集,对近期有限事务或类似数据池的追踪记录。比如:日......
  • C++指针(五)完结篇
    个人主页:PingdiGuo_guo收录专栏:C++干货专栏前言相关文章:C++指针(一)、C++指针(二)、C++指针(三)、C++指针(四)万字图文详解!本篇博客是介绍const、野指针、双指针、assert断言、NULL指针的知识的。文章目录前言1.const与指针1.1修饰变量1.2修饰指针变量2.野指针2.1为......
  • npm启动vue项目报错error:0308010C:digital envelope routines::unsupported的解决办
    错误截图解决方法package.json文件中修改dev项为setNODE_OPTIONS=--openssl-legacy-provider&vue-cli-serviceserve:"scripts":{"dev":"setNODE_OPTIONS=--openssl-legacy-provider&vue-cli-serviceserve","build:prod......
  • C#集合和数据结构,随笔记录
    C#集合和数据结构System.Collections命名空间包含接口和类,这些接口和类定义各种对象(如列表/链表、位数组、哈希表、队列和堆栈)的集合            System.Collections.Generic命名空间:所有集合都直接或间接基于ICollection接口列表类集合类型:集合类型基......
  • KTH1601与无线蓝牙耳机:让音乐与科技无缝连接
    在数字时代,无线蓝牙耳机因其便捷和高质的音质成为了音乐爱好者的首选。而随着技术的不断进步,现在的无线蓝牙耳机不仅仅是一个简单的音频播放设备,它还能通过智能感应技术,实现更为人性化的操作体验。 苹果AirPods耳机的创新翻盖触发设计, 堪称工业设计经典(图片来源苹果......
  • 01-Ajax&Axios
    AjaxAsynchronousJavascriptAndXml传统的请求方式:URL地址栏超链接form表单通过JS代码window.open(url)document.location.href=urlwindow.location.href=url缺陷:页面全部刷新,用户体验较差用户体验不连贯概述Ajax可以在浏览器中发送......