美文网首页
c基础 - 题目:用两种方法对两个值进行交换

c基础 - 题目:用两种方法对两个值进行交换

作者: 世道无情 | 来源:发表于2019-03-02 05:53 被阅读0次

前言

变量:就是给内存地址取一个别名;

1. 概述

这里写一个题目:用两种方法对两个值进行交换

方法一:定义中间变量temp,让两个值进行交换,思路如下:
    1.  在 main() 方法中定义两个int类型的变量:int a = 100 ,int b = 200 ;
    2.  在 main() 方法中的 change(&a,&b) 需要传递 ab的地址;
    3.  在 main() 方法上边写一个 change(int* a,int* b)方法,用于交互ab的值,这里的 a和b已经是地址了,
        相当于 a=&a,b=&b ;
    4.  而 *a = *b:表示:对a的地址取值 = 对b的地址取值;

    这样,就实现了ab两个值的交换:结果为 200  100;

方法二为面试题
方法二:不能开辟额外内存,意思就是不能用中间变量,交换两个值,思路如下:
    // 交换
    a = a + b; // a = 100 + 200 = 300
    b = a - b; // b = 300 - 200 = 100 
    a = a - b; // a = 300 - 100 = 200 
2. 代码如下

1>:方法一:定义中间变量temp,代码如下:
#include<stdio.h>  // 导入头文件,头文件都是方法的声明。

// 这里用 int类型的指针 int* 接收传递过来的两个地址,此时的 a和b已经是两个地址了
void change(int* a , int* b){
    int temp = *a;
    *a = *b; // 对a的地址取值 = 对b的地址取值 
    *b = temp;
}
void main(){
    int a = 100;
    int b = 200;

    // 交换:这里直接传递ab的地址
    change(&a , &b);
    printf("交互后ab的值分别是:%d,%d",a,b);  // 200 100

    getchar();
}
2>:方法二:不能开辟额外内存,意思就是不能用中间变量,代码如下:
#include<stdio.h>  // 导入头文件,头文件都是方法的声明。

void main(){
    int a = 100;
    int b = 200;

    // 交换
    a = a + b; // a = 100 + 200 = 300
    b = a - b; // b = 300 - 200 = 100 
    a = a - b; // a = 300 - 100 = 200 
    printf("交互后ab的值分别是:%d,%d", a, b);  // 200 , 100
    getchar();
}
3. 注意事项:

选中方法,右键,转到声明,可以看到该方法的返回值,以及需要传递的参数

相关文章

  • c基础 - 题目:用两种方法对两个值进行交换

    前言 变量:就是给内存地址取一个别名; 1. 概述 这里写一个题目:用两种方法对两个值进行交换 2. ...

  • C#语言规范(小例子)

    一、交换两个数字的值 1、普通交换 2、用方法执行交换 方法传值必须加ref 不加只是交换原来值的副本,值本身...

  • Java使用异或交换两个整数或者字符串的用法及原理

    java交换两个数或字符串可以用temp来交换,如果不使用temp,有下面两种交换方法: 1.对于数来说,可以用如...

  • 【2018年最新】iOS面试题之算法

    1、不用中间变量,用两种方法交换A和B的值// 1.中间变量void swap(int a, int b) {in...

  • 【iOS】【面试】算法收集

    不用中间变量,用两种方法交换A和B的值 // 1.中间变量void swap(int a, int b) { i...

  • jsday01

    js 交换两个值的方法 方法一 方法二(适用于数字交换) 方法三(位运算) 什么时候值是undefined (变量...

  • 不使用第三方变量,交换变量a和b的值

    下面是我用java实现不使用第三方变量进行两个变量的值交换的代码: 1、变量类型是整形() 方法一: int a ...

  • C语言栈

    C语言实现简单的栈结构 今天看到一个问题是要交换两个变量的值并且不能使用中间变量,首先想到的方法就是用数学的方法:...

  • OC-1

    1.不用中间变量,用两种方法交换A和B的值 A = A+B;B = A - B;A = A - B; 2.常见的o...

  • Python3 & 交换的底层逻辑

    Python 交换变量,可以使用中间变量的方法交换两个变量的值,例如: 但是在Python中 交换两个数的值可以有...

网友评论

      本文标题:c基础 - 题目:用两种方法对两个值进行交换

      本文链接:https://www.haomeiwen.com/subject/lxooiftx.html