黑马程序员技术交流社区
标题:
用函数实现两变量值交换(指针)
[打印本页]
作者:
堕落天使
时间:
2015-9-15 17:18
标题:
用函数实现两变量值交换(指针)
本帖最后由 堕落天使 于 2015-9-15 20:40 编辑
一个简单地程序,但是能体现出指针的用法。
/*
思考&实现
用函数实现两个变量值的交换。
*/
#include <stdio.h>
/**
* 通过指针交换两个变量的值
*
* @param p 第一个变量的地址
* @param p1 第二个变量的地址
*/
void exchang(int *p,int *p1){
int temp;
temp=*p; //注意此处是取指针p指向地址内的值进行运算。
*p=*p1;
*p1=temp;
}
/**
* 此方法不能实现交换的功能
* 在此函数中,形参a和b的值实现了交换,但是程序结束,此函数分配的内存
* 消失,对应的形参的内存也消失,交换的值没有对实参产生任何影响。
* 所以不成功。
*/
void exchang_1(int a,int b){
int temp;
temp = a;
a = b;
b = temp;
}
int main(int argc, const char * argv[]) {
int a=5, b=4;
printf("交换前a = %d,b = %d\n",a,b);
exchang(&a, &b);
printf("交换后a = %d,b = %d\n",a,b);
int a1=5, b1=4;
printf("交换前a1 = %d,b1 = %d\n",a1,b1);
exchang_1(a1,b1);
printf("交换后:a1= %d,b1= %d",a1,b1);
//结果并为交换。
复制代码
作者:
陆露
时间:
2015-9-15 18:07
int a1=5, b1=4;
printf("交换前a1 = %d,b1 = %d\n",a,b);
exchang_1(a1,b1);
printf("交换后:a1= %d,b1= %d",a,b);
你这里定义的是a1 b1 为什么后面打印的是 a,b ?
而且你传到函数里的变量也是 a1 b1
作者:
堕落天使
时间:
2015-9-15 20:41
陆露 发表于 2015-9-15 18:07
int a1=5, b1=4;
printf("交换前a1 = %d,b1 = %d\n",a,b);
exchang_1(a1,b1);
是我打错了,输出的时候应该是a1和b1.
多谢提醒,已改正。
作者:
ai77033024
时间:
2015-9-15 21:28
....可以的
作者:
kylmetz
时间:
2015-9-15 21:31
可以可以可以
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2