更多“若有: int i=1000; int *p=&i; void*q; q=p; 其中,q=p的含义是______。 ”相关问题
  • 第1题:

    下列程序的输出结果是( )。 void f(int *x, int *y) { int t; t=*x,*x=*y;*y=t; } main( ) { int a[8]={1,2,3,4,5,6,7,8},i,*p,*q; p=a;q=&a[7]; while(p<q) { f(p,q); p+ +; q--;} for (i=0;i<8;i+) printf("%d,",a[i]); }

    A.8,2,3,4,5,6,7,1

    B.5,6,7,8,1,2,3,4

    C.1,2,3,4,5,6,7,8

    D.8,7,6,5,4,3,2,1


    正确答案:D
    解析:函数f()的功能是对两个数据互换。在主函数中指针变量p和q分别指向数组a[8]的首和尾,在while循环中实现从首尾开始数组元素的互换操作。

  • 第2题:

    下列哪个式子不能表达“p是q的倍数”?()

    A.p Mod q=0

    B.p/q=p\q

    C.Int(p/q)=p/q

    D.Int(p/q)=Mod(p/q)


    本题答案:D

  • 第3题:

    如有下面的语句说明, 则下面赋值表达式非法的是 ()。 int i=0, j=0, *p=NULL,*q=NULL;

    A.p=&i

    B.*q=&j

    C.i=*p++ + *q

    D.i=(int) p


    p=&i

  • 第4题:

    若有以下程序: void g(int **q) { (**q) ++; (*q) ++; } void main() { int line [5]; int *p=line; for (i=0; i<5; i++) { *p=i; g(&P); } for (i=0; i<5; i++) cout<<line[i]; cout<<end1; } 该程序运行后的输出结果为( )。

    A.12345

    B.1234

    C.11111

    D.55555


    正确答案:A
    解析:本题考核指针的运用。主函数的for循环中向函数g()传入实参&p,则在函数g()中执行“(**q)++;”相当于执行“(**(&p))++”,即(*p)++,其结果就是对相应的数组元素值加1。函数g()中执行“(*q)++;”相当于执行“(*(&p))++”,即p++。其结果为指针p指向下一个数组元素。这样通过for循环给数组元素分别赋值1、2、3、4、5。

  • 第5题:

    以下程序的输出结果是( )。 include void swap(int*a,int*B){int*t; t=a;a=b;b=c;} main

    以下程序的输出结果是( )。 include<stdio.h> void swap(int*a,int*B){int*t; t=a;a=b;b=c;} main() {int i=3,j=5,*p=&i,*q=&j; swap(p,q);printf("%d %d\n",*p,*q); }


    正确答案:3 5
    3 5 解析:本题考查函数中形参和实参的传递。在C语言函数中实参和形参传递具有不可逆性,参数只能由实参传向形参,而不能由形参传向实参,虽然swap函数的功能是实现两个数的交换,但由于没有返回值,故最终的输出结果为3 5。