`
kmplayer
  • 浏览: 508815 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

交换a和b的值,单向"值传递"

阅读更多
1,第一次接触C语言编程就该理解的东东,上次笔试居然搞糊涂了.
这里总结一下,其实就是一句话:参数"单向值传递",形参无法改变实参本来的值.
实现a和b成功交换,有两种方法:
(1)实参为a和b的引用.
(2)实参为a和b的地址,函数改变a和b的地址存储的值.
实例代码:
#include <iostream>
using namespace std;

//单向"值传递",无法将形参传递给实参
void swap1(int a,int b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

//引用,改变的就是原来那个变量
void swap2(int& a,int& b)
{
    int temp;
    temp=a;
    a=b;
    b=temp;
}

//同理,单向"值传递",指针地址不变.
void swap3(int* pa,int* pb)
{
    int* temp=0;
    temp=pa;
    pa=pb;
    pb=temp;
}

//指针地址不变,但是指向的值发生了变化.
void swap4(int* pa,int* pb)
{
    int temp;
    temp=*pa;
    *pa=*pb;
    *pb=temp;
}


int main()
{
    int x,y;
    x=3;
    y=4;
    swap1(x,y);
    cout<<x<<" "<<y<<endl;

    x=3;
    y=4;
    swap2(x,y);
    cout<<x<<" "<<y<<endl;

    x=3;
    y=4;
    swap3(&x,&y);//x,y值不变.
    cout<<x<<" "<<y<<endl;

    x=3;
    y=4;
    swap4(&x,&y);
    cout<<x<<" "<<y<<endl;

    return 0;
}
分享到:
评论

相关推荐

    C++单向按值传递(产生临时对象) 双向按引用传递(不产生临时对象不占任何内存).rar

    在这个`swap`函数的按引用版本中,由于`a`和`b`是`x`和`y`的引用,所以它们的交换会影响到`main`函数中的变量。 三、选择传递方式的考虑因素 1. 性能:如果传递的是大型对象,按值传递可能会导致不必要的内存复制,...

    C语言中函数参数传递问题探讨.pdf

    值传递是一种单向传递,即主调函数调用时给形参分配存储单元,把实参的值传递给形参,调用结束后,形参的存储单元被释放,而形参值的任何变化都不会影响到实参的值,实参的存储单元仍保留并维持数值不变。...

    C语言中函数的参数传递.pdf

    由于基本类型的参数是传值的,因此尽管在fun1内部a和b的值被交换了,但main函数中的x、y的值不会改变。 【例2】基本类型指针作为函数参数的传址方式: ```c #include "stdio.h" void fun2(int *a, int *b) { int ...

    C语言程序设计试题及答案三.docx

    9. 简单变量作为实参时,他和对应形参之间的数据传递方式是A) 单向值传递,即实参传给形参的是副本,形参改变不影响实参。 10. 输出为C) 6,`strlen(str)` 计算字符串长度,包含结束符 '\0'。 【填空题解析】 1. ...

    C语言程序设计试题及答案三.doc

    正确答案是A) 单向值传递,C语言中实参和形参之间是单向值传递,即值拷贝。 - 第10题涉及到字符串长度。正确答案是C) 6,strlen函数计算不包括结束符'\0'在内的字符串长度。 2. 填空题: - 未提供完整填空题内容,...

    C语言程序设计试题及答案(三).pdf

    - 当简单变量作为实参时,C语言采用单向值传递,即形参只是实参的一个副本,修改形参不会影响实参,选项A)正确。 7. **函数调用**: - `fun1`函数用于排序,`fun2`函数用于交换两个变量的值。在`fun1`中,`fun2`...

    C语言程序设计试题及答案.pdf

    ASCII值48对应数字字符0,程序中`a`和`b`初始化为字符'1'和'2',`b++`后变为'3',它们之间的ASCII值差为2,因此输出是50和2。答案是B。 6. 字符串赋值: 字符串赋值应使用双引号,且不能对非字符数组的指针直接赋...

    C语言程序设计试题及答案(九).doc

    5. ASCII值和字符输出: 字符'1'的ASCII值为49,'2'的ASCII值为50。程序`printf("%c,",b++)`会先输出当前的b值,然后自增,因此输出50,第二个`printf("%d\n",b-a)`输出b-a的差,即2。 6. 字符串赋值: 只有D选项...

    C语言教学中指针作函数参数的讨论.pdf

    例如,在swap1函数中,传递的是值的副本,在函数内部,P和q的值确实是交换了,但是它们是局部变量,不会影响到主函数的a和b。当swap1返回时,p和q也就被删除了。所以,从主函数的角度来看,swap1是不能完成a、b的值...

    c语言部分函数练习题,附答案

    } 只是交换了 a 和 b 的值,但是不改变外部变量 x 和 y 的值。 15. 在 C 语言中,有以下程序 int f(int n) { if (n == 1) return 1; else return f(n - 1) + 1; },其运行结果是 f(5) = 5,因为函数 f(int n) 是一...

    程序员面试宝典题目总结

    交换两个变量的值而不使用临时变量 **知识点解析:** 使用加减法或异或运算都可以实现。 - **加减法:** ```c a = a + b; b = a - b; a = a - b; ``` - **异或法:** ```c a = a ^ b; b = a ^ b; a = a ^...

    Java程序设计:第6章_方法.ppt

    在这个例子中,尽管`a`和`b`在`swap`方法内部被交换,但实际参数`x`和`y`的值并没有改变,因为传递给`swap`的是`x`和`y`的副本,而非`x`和`y`本身。 理解并熟练运用这些概念对于编写高效、可维护的Java程序至关重要...

    实例阅读实例程序了解C语言程序的执行过程PPT学习教案.pptx

    在`swap()`函数的示例中,可以看到如何通过临时变量实现两个数的交换,这展示了值传递单向传递的特点。 此外,PPT还提到一个练习,即编写一个程序,让用户输入数字`n`,然后计算1到`n`的和。这个任务可以通过调用...

    2020高中生物第五章生态系统及其稳定性第4节生态系统的信息传递精练含解析新人教版必修3

    如同物种 a 和物种 b 的关系,虽然能量流动通常是单向的(从 a 到 b),但信息传递可能是双向的,生物间的互动可能互相影响,形成反馈机制。例如,在捕食关系中,被捕食者的行为可能会反过来影响捕食者的捕食策略。 ...

    现代交换原理复习11

    10. **TST网络**:在16入线16出线的TST网络中,PCM每帧256个时隙,A到B选TS25,则B到A的内部时隙为153。 11. **Banyan网络**:Banyan网络是有阻塞的单通路网络,其特性包括唯一路径和自选路由,但并非无阻塞。 12....

    自考《计算机基础与程序设计》试题及答案.pdf

    知识点:程序段使用了变量交换的技巧,a和b的值被交换。 11. 设有声明int x=-1;执行if(x)x=-x-1;后变量x的值是2。因此,正确答案是D.2。 知识点:if语句用于条件判断,x=-x-1是将x的值取反并减1。 12. 关于...

    第三 模块化程序设计PPT课件.pptx

    函数调用时的实际参数可以是常量、变量或表达式,但必须与形式参数类型匹配,数据传递通常是值传递,即实参到形参的单向传递。例如,如果要交换两个数的值,可以创建一个函数并传入参数,但由于值传递,原始变量不会...

    新高考2020高考生物二轮复习第二部分考前高分冲刺方略策略一热考素材热主题12生命系统中的“信息传递”课件20200319029

    同样,内环境中的物质交换,如组织液和淋巴间的物质转移,也是单向的,组织液中的物质可以进入淋巴,但淋巴不能逆流回组织液。 5. **信息传递在生物学考试中的考察** 高考生物复习中,信息传递是重要的考点,包括...

    程控交换实验、用户模块电路 主要完成BORSCHT七种功能,它由下列电路组成:

    6、自动交换网络驱动电路: 主要实现电话交换通信时,CPU发出命令信息,由此电路实现驱动自动交换网络系统,其核心集成电路为SN74LS374,D8255A,GD74LS373等芯片。 7、信号音控制电路: 它完全按照CPU发出的指令...

    C语言程序设计(梁栋主编)课后习题答案

    6. 实参与形参的数据传递:C语言中,简单变量作为实参时,数据是通过值传递,即单向值传递,选项B)正确。这意味着形参的变化不会影响到实参的值。 7. 无返回值的函数:如果一个函数没有`return`语句,那么它没有...

Global site tag (gtag.js) - Google Analytics