参考答案和解析
正确答案:B
更多“下列程序的运行结果是 voidfun(int*a,int*b) {int*k; k=a;a=b;b=k; } main() {inta=3,b ”相关问题
  • 第1题:

    下列程序的运行结果是includevoid fun(int * a,int * b){int * k; k=a; a=b; b=k;}

    下列程序的运行结果是 #include<iostream.h> void fun(int * a,int * b) { int * k; k=a; a=b; b=k; } void main( ) { int a=3,b=6, * x=&a, * y=&b; fun(x, y) ; cout < < a < < " " < < b; }

    A.6 3

    B.3 6

    C.编译出错

    D.0 0


    正确答案:B
    解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中去。在本题解析中,我们试图将这一问题解释清楚!
      大家可以考虑一下利用下面这函数可不可以实现 a和b的互换。
      swap(int x, int y)
      { int;
       t=X;
       x=y;
       y=t;
      }
      如果在main函数中用swap(a, b) ,会有什么结果呢?在函数调用开始时,a的值传送给x,b的值传递给 y。执行完swap( ) 函数后,x和y的值是互换了,但 main( ) 函数中的a和b并未互换。也就是说由于“单向传递”的“值传递”方式,形参值的改变无法传递给实参。
      为了使在函数中改变了的变量值能被main( ) 函数所用,不能采取上述办法,而应该用指针变量作函数参数。在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化被保留下来,这样就实现了调用函数改变变量的值,在主调函数中使用这些改变了的值的目的。
      swap(int * p1,int * p2)
      { int p;
       p= * p1;
       * p1= * p2;
       * p2=p;
      }
      注意交换 * p1和 * p2的值是如何实现的,如果写成下面这样就有问题了!
      swap(int * p1,int * p2)
      { int * p;
       * p=p1;/ * 此语句有问题 * /
       * p1= * p2;
       * p2= * p;
    }
      * p1就是a,是整型变量。而 * p是指针变量p所指向的变量,但p中并无确切地址,用 * p可能会破坏系统的正常工作状态。应该将。p1的值赋给一个整型变量,用整型变量作为过渡变量实现,p1和 * p2的交换。

  • 第2题:

    下列程序的运行结果是includevoid fun(int*a,int*b){int*k; k=a;a=b;b=k;}void mai

    下列程序的运行结果是 #include<iostream.h> void fun(int*a,int*b) { int*k; k=a;a=b;b=k; } void main() { int a=3,b=6,*x=&a,*y=&b; fun(x,y); cout < < a < < " " < < b; }

    A.6 3

    B.3 6

    C.编译出错

    D.O 0


    正确答案:B
    解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中去。在本题解析中,我们试图将这一问题解释清楚!大家可以考虑一下利用下面这函数可不可以实现a和b的互换。swap(intx,inty){intt;t=x;x=y;y=t}如果在main函数中用swap(a,b),会有什么结果呢?在函数调用开始时,a的值传送给x,b的值传递给y。执行完swap()函数后,x和y的值是互换了,但main()函数中的a和b并未互换。也就是说由于“单向传递”的“值传递”方式,形参值的改变无法传递给实参。为了使在函数中改变了的变量值能被main()函数所闻,不能采取上述办法,而应该用指针变量做函数参数。布函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化被保留下来,这样就实现了调用函数改变变量的值,在主凋函数中使用这些改变了的值的目的。swap(int*p1,int*p2){intp;p=*p1;*p1=*P2;*p2=p;}注意交换*P1和*p2的值是如何实现的,如果写成下面这样就有问题了!swap(int*P1,int*p2){int*P;*p=*P1;/*此语句有问题*/*p1=*p2;*p2=*p:}*p1就是a,是整型变量。而*p是指针变量p所指向的变量,但p中并无确切地址,用*p可能会造成破坏系统的正常工作状态。应该将*p1的值赋给一个整型变量,用整型变量作为过渡变量实现*P1和*p2的交换。

  • 第3题:

    下列程序的运行结果是()。void fun(int*a,int*b){int *k;k=a;a=b;b=k;}main(){int a=3,b=6,*x=&am

    下列程序的运行结果是( )。 void fun(int*a,int*b) { int *k; k=a; a=b; b=k; } main() { int a=3,b=6,*x=&a,*y=&b; fun(x,y); printf("%d%d",a,b); }

    A.63

    B.36

    C.编译出错

    D.0 0


    正确答案:B
    解析:在C语言中,调用函数时是将实参复制一份给形参,所以无论怎么改变形参的值,都不会影响到实参,即传值调用。即使形参是指针变量,也没有改变C语言传值调用这个事实,实参指针也还是复制了一份给形参指针,无论怎么改变形参指针的内容(注意:不是形参指针所指向的内容),也不会影响实参指针的内容。但它们两个现在的值一样,即指向的是同一个内存地址,所以改变形参指针所指向的内容,也就改变了实参指针所指向的内容,C语言就是这样实现传址调用的。本题中fun()函数的形参就是两个指针,但函数中没有任何语句改变这两个指针所指向的内容,只是交换了两个参数的内容,所以该函数不会对传递给它的实参以及实参所指向的内容造成任何影响,故a,b初始化时为3,6,输出结果亦为3和6。应该选择B。

  • 第4题:

    下列程序的运行结果是includevoid fun(int *a,int *B){int *k;k=a;a=b;b=k;}void m

    下列程序的运行结果是 #include<iostream.h> void fun(int *a,int *B) {int *k; k=a;a=b;b=k; } void main( ) {int a=3,b=6,*x=&a,*y=&b; fun(x,y); cout << a <<" "<< b; }

    A.63

    B.36

    C.编译出错

    D.0


    正确答案:B
    解析:函数的参数不仅可以是整型、实型、字符型等数据,还可以是指针类型。它的作用是将一个变量的地址传送到另一个函数中去。在本题解析中,我们试图将这一问题解释清楚!大家可以考虑一下利用下面这函数可不可以实现a和b的互换。swap(intx,inty){intt;t=x;x=y;y=t;}如果在main函数中用swap(a,B,会有什么结果呢?在函数调用开始时,a的值传送给x,b的值传递给y。执行完swap()函数后,x和y的值是互换了,但main()函数中的a和b并未互换。也就是说由于“单向传递”的“值传递”方式,形参值的改变无法传递给实参。为了使在函数中改变了的变量值能被main()函数所用,不能采取上述办法,而应该用指针变量做函数参数。在函数执行过程中使指针变量所指向的变量值发生变化,函数调用结束后,这些变量值的变化被保留下来,这样就实现了调用函数改变变量的值,在主调函数中使用这些改变了的值的目的。swap(int*p1,int*p2){intp;p=*p1;*p1=*p2;*p2=p;}注意交换*p1和*p2的值是如何实现的,如果写成下面这样就有问题了!swap(int*p1,int*p2){int*p;*p=*p1;/*此语句有问题:*/*p1=*p2;*P2=*p;}*p1就是a,是整型变量。而*p是指针变量p所指向的变量,但p中并无确切地址,用*p可能会造成破坏系统的正常工作状态。应该将*p1的值赋给一个整型变量,用整型变量作为过渡变量实现*p1和*p2的交换。

  • 第5题:

    下列程序的运行结果是()。includevoid fun(int *a, int *b){int *k; k=a; a=b; b=k;}ma

    下列程序的运行结果是( )。 #include <stdio.h> void fun(int *a, int *b) { int *k; k=a; a=b; b=k; } main() { int a=3,b=6, *x=&a, *y=&b; fun(x,y); printf("%d%d",a,b);

    A.6 3

    B.3 6

    C.编译出错

    D.0 0


    正确答案:B
    解析:程序看上去是要实现交换两个指针的值,但是C语言中实参变量和形参变量之间的数据传递是单向的“值传递”,指针变量做函数参数也要遵循这一规则。调用函数不能企图通过改变形参指针的值而使实参指针的值也改变。所以本题的输出结果是36。