首页 > 试题广场 >

以下程序的结果?

[单选题]
以下程序的结果? 
#include<stdio.h>
void foo(int *a, int *b){
    *a = *a + *b;
    *b = *a - *b;
    *a = *a - *b;
}
int main(){
    int a = 1, b = 2, c = 3;
    foo(&a, &b);
    foo(&b, &c);
    foo(&c, &a);
    printf("%d, %d, %d", a, b, c);
}
  • 1,2,3
  • 1,3,2
  • 2,1,3
  • 3,2,1
推荐
B。
foo(*a, *b)交换a和b的值,所以经过a、b、c的值经过
foo(&a, &b); foo(&b, &c); foo(&c, &a);
由1,2,3变为1,3,2
编辑于 2015-01-02 21:47:59 回复(1)
交换。
发表于 2015-08-22 10:59:24 回复(0)
a b c
1 2 3
foo(&a, &b);
3 2 3
3 1 3
2 1 3
foo(&b, &c);
2 4 3
2 4 1
2 3 1
foo(&c, &a);
3 3 1
3 3 2
1 3 2
发表于 2017-02-08 21:16:57 回复(0)
分析foo(int *a, int *b)函数功能,交换a和b的值。
发表于 2015-03-16 22:44:14 回复(0)
foo的功能相当于交换a和b
发表于 2015-02-27 18:02:07 回复(0)
弄清foo函数的作用: 以部分和的方式交换两个变量的值,但存在值溢出的可能性,最佳的做法是用异或运算符。 作用明确后,三次foo调用后的结果,也就显而易见。
发表于 2021-04-03 11:35:09 回复(0)
程序中foo函数代码告诉了我们一个在不使用指针的情况下交换两个变量的值,即:
a = a + b;
b = a - b;
a = a - b;
因为这里传入的是指针,所以可以改变原来的数。而且使用这样的方式可以不借助中间变量完成交换。
发表于 2017-09-28 16:30:30 回复(0)
B
发表于 2015-01-07 19:11:43 回复(0)
B foo()函数的作用是交换数值
发表于 2015-04-02 13:09:46 回复(0)
指针参数 本质上是 值传递,  但是 值的类型是 变量的引用。所有的操作都是对变量本身的操作而不是 它的复制。
发表于 2015-06-09 14:52:50 回复(0)
foo函数为地址转换, 设a地址为3,b地址为5 第一条语句:*a被给到新地址A, 此时A=3+5=8 第二条语句:*b=A-*b=8-5=3,为原*a地址,新*b为3 第三条语句:*a=A-*b=8-3=5,为原*b地址 交换完成。
发表于 2019-03-12 09:35:14 回复(0)
a=a+b;
b=a-b;
a=a-b;可以实现对a、b的交换,所以答案就出来了。
本回答的意义是:考虑a、b的数值都比较大时,这种做法可能出现超界。因此最佳方法可以用以下式子达到交换目的:
a=a^b;//进行按位异或运算
b=a^b;
a=a^b;

编辑于 2016-09-17 23:18:52 回复(0)
传址操作,实际上是将两个指针参数所指向的值交换了
发表于 2018-08-21 15:49:29 回复(0)
交换的两种写法
void Swap(int &x.int &y)
{
    int temp=x;
    x=y;
    y=x;
}
void Swap(int* x,int* y){
    *x=*x+*y;
    *y=*x-*y;
    *x=*x-*y;
}
牢记


发表于 2019-08-13 13:38:29 回复(0)
列等式找出算法目的 注意变量的变化对后来的影响
发表于 2021-06-14 11:22:03 回复(0)
不难看出这个函数的功能室交换两个变量的值,和swap一样。
发表于 2021-03-28 23:45:47 回复(0)

a=a+b

b=a+b-b

a=a+b-a


a=b

b=a

编辑于 2020-03-23 21:04:03 回复(0)
voidfoo(int*a, int*b) 表示int类型的指针
{
    *a = *a + *b;  表示取指针内的值
发表于 2019-11-04 13:42:06 回复(0)
贾!j;90 x 4088 th 一拳9 gn 69 166.. f:n用74 5 2 81.
发表于 2019-06-22 16:04:40 回复(0)

考完题目

发表于 2019-04-14 00:20:23 回复(0)
foo函数的功能其实就是交换参数的两个值。可以将式子进行代换就得到结果了。
发表于 2018-09-07 12:37:45 回复(0)