c语言函数实现交换两个数的值
代码:
#include <stdio.h> void swap(int x,int y)
{
int temp; temp = x;
x = y;
y = temp;
printf("In swap: x = %d,y = %d\n",x,y);
} void swap_with_pt(int * x,int * y)
{
int temp; temp = *x;
*x = *y;
*y = temp;
printf("In swap_with_pt: x = %d,y = %d\n",*x,*y);
} int main()
{
int x = ,y = ; printf("Before swap: x = %d,y = %d\n",x,y);
swap(x,y);
printf("After swap: x = %d,y = %d\n",x,y);
printf("-------------------------------\n");
printf("Before swap_with_pt: x = %d,y = %d\n",x,y);
swap_with_pt(&x,&y);
printf("After swap_with_pt: x = %d,y = %d\n",x,y); return ;
}
输出:
Before swap: x = 5,y = 10
In swap: x = 10,y = 5
After swap: x = 5,y = 10
---------------------------------
Before swap_with_pt: x = 5,y = 10
In swap_with_pt: x =10,y = 5
After swap_with_pt: x = 10,y = 5
解释:
swap函数调用时首先创建x,y的变量副本,我们姑且称之为x2,y2(其实名字依然是x和y,只不过这里的x和y只在swap函数里有意义),并将main函数中x,y的值传给变量x2,y2,然后函数交换了x2,y2的值,运行完函数后x2,y2变量生命期结束。所以,x和y的值是不变的。
swap_with_pt函数调用时同样创建x,y的指针的变量副本,我们姑且称之为x2,y2(其实名字依然是x和y,只不过这里的x和y只在swap_with_pt函数里有意义),并将x,y的地址值传给x2,y2,这个时候x2和y2是指向main函数中x,y的,然后通过*运算修改x,y的值。注意,“*+指针名”是可以改变它所指向的变量的值的。
c语言函数实现交换两个数的值的更多相关文章
- c语言实现交换两个数的值
C语言中要实现交换两个数的值,可以有很多种方法,具体如下所述. 不使用中间变量: // 异或, a^=b^=a^=b; a ^= b; b ^= a; a ^= b; // 加减 a = a + b; ...
- C语言交换两个数的值
#include<stdio.h> int main() { //交换两个数的值 // 方法一 可读性最好 ; ; int temp ; temp = a; a = b; b = temp ...
- java中不创建使用第三方变量,交换两个数的值
1.直接使用算术运算法交换 先把两个数的和赋值给其中一个,然后做减法.例如num1=num1+num2; 此时num2(交换之后)就等于num1减去num2:废话不多说,直接上代码 public cl ...
- php不用第三个变量,交换两个数的值
//字符串版本 结合使用substr,strlen两个方法实现 $a="a"; $b="b"; echo '交换前 $a:'.$a.',$b:'.$b.'< ...
- Qt_C++交换两个数
在编程过程中,交换两个数是我用常用的 ,这里做下简单的搬运 bool Widget::swap(int a, int b) { int temp =a; a= b; b = temp; } 这种方式其 ...
- 20140806 交换两个数 extern “C”用法
1.交换两个数 方法1.a+b有可能越界 a=a+b; b=a-b; a=a-b; 方法二.不会越界 a=a^b b=a^b; a=a^b; 2.extern "C"用法 ( ...
- 实现pow(int x, int y),即x的y次方 ; 异或交换两个数;
问题1:实现pow(int x, int y) ,即x的y次方 x的y次方就是有y个x连续乘机,代码如下: #include <stdio.h> #include <stdlib.h ...
- PTA 面向对象程序设计 6-1 引用作函数形参交换两个整数
引用作函数形参交换两个整数 设计一个void类型的函数Swap,该函数有两个引用类型的参数,函数功能为实现两个整数交换的操作. 裁判测试程序样例: #include <iostream> ...
- 用一条UPDATE语句交换两列的值
在SQL UPDATE语句中,"="右侧的值在整个UPDATE语句中都是一致的,所有更新同时发生!因此以下语句将在没有临时变量的情况下交换两列的值: UPDATE table SE ...
随机推荐
- c++STL之sort排序
排序算法为竞赛中最常用的算法之一,我们可以利用C++自带的库函数进行排序. ...
- B - 敌兵布阵 线段树的点
B - 敌兵布阵 Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Descriptio ...
- 百度地图坐标转换API和地图API
利用百度地图的服务将经纬度转换为米单位坐标 using System; using System.Collections.Generic; using System.Linq; using Syste ...
- PHP每日签到及连续签到奖励实现示例
数据库字段 num 记录已经连续签到次数 times 记录签到的日期 格式年月日 如 20160101 PHP代码如下 <?php //获取今天的日期 $today = date('Ymd'); ...
- python运维开发(八)----面向对象(下)
内容目录: 面向对象三大特性之多态性 面向对象中的成员:字段.方法.属性 类的成员修饰符 类的特殊成员 特殊成员方法 面向对象其他 异常处理 设计模式之单例模式 面向对象的多态性 多态性:即指多种形态 ...
- 正式学习React(五) Reactjs 的 PropTypes 使用方法
propTypes 使用來規範元件Props的型別與必需狀態 var Test = React.createClass({ propTypes: { // required requiredFunc: ...
- Oracle EBS-SQL (QA-3):检查已检验未入库.sql
DEFINE RECE="%" SELECT rsh.receipt_num 收据号, ...
- Filter与Servlet的区别和联系
Filter Servlet 接口 实现Filter接口 实现Servlet接口 使用步骤 1.创建类,继承接口 2.实现方法 init() doFilter() destroy() 3.配置WEB- ...
- 【写一个自己的js库】 3.添加几个处理字符串的方法
1.生成重复的字符串 if(!String.repeat){ String.prototype.repeat = function (count){ return new Array(count + ...
- Linux常用C函数---内存控制篇
函数讲解部分参考http://net.pku.edu.cn/~yhf/linux_c/ calloc(配置内存空间) 相关函数 malloc,free,realloc,brk 表头文件 #includ ...