前言
变量:就是给内存地址取一个别名;
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. 注意事项:
选中方法,右键,转到声明,可以看到该方法的返回值,以及需要传递的参数
网友评论