更多“有如下程序段void fun(int *a, int *b){ int *k; k=a; a=b; b=k;}main(){ int a=3, b=6, *x=&a, ”相关问题
  • 第1题:

    下列程序的运行结果是______。 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


    正确答案:B
    解析:本题中主函数里的x、y,fun函数里的a、b、k,这些都是指针,fun函数中只是将a、b这两个指针交换了位置,而并没有改变主函数中变量a、b的值。

  • 第2题:

    以下程序的输出结果是#include "stdio.h"int *fun(int *a,int *b){ int m; m=*a; m+=*b-3; return(&m);}main(){ int x=21,y=35,*a=&x,*b=&y; int *k; k=fun(a,b); printf("%d\n",*k);}


    正确答案:53
    本题考查指针函数的使用。题目给出的程序包括两个部分,一个为指针函数fun,一个为主函数main。主函数main部分给出两个整型变量x和y,并给出相应的赋值。main函数的执行结果为输出*k的值,而*k的值即*fun的值。fun函数包括两个整型指针形参*a和*b。通过对*a、*b进行操作,得到结果m,并将m值返回,整个程序的实际输出即为m的值。初始时,m=*a=21。随后令m=m+*b-3,得m=53。整个程序的输出结果即为53。

  • 第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题:

    下列程序的运行结果是______。 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


    正确答案:B
    解析:本题fun函数的功能是实现数据交换,交换的只是存储指针变量的地址,且指针所指向的内容不变。

  • 第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。