若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(). A) p=q; B) *p=*q; C) n=*q; D) p=n;A.p和q是同类型的指针变量#B.把q所指向空间中的值赋给p所指向空间中#C.n可以获得q所指向空间中的值#D.int n=2,*p=&n,*q=p;中已定义p是指针变量且已获得变量n的地址,而p=n是让p获得n的值,这是无意义的。

题目

若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(). A) p=q; B) *p=*q; C) n=*q; D) p=n;

A.p和q是同类型的指针变量#B.把q所指向空间中的值赋给p所指向空间中#C.n可以获得q所指向空间中的值#D.int n=2,*p=&n,*q=p;中已定义p是指针变量且已获得变量n的地址,而p=n是让p获得n的值,这是无意义的。

相似考题
参考答案和解析
D 解析:本题中首先定义了一整型变量n并赋初值为2,接着定义了一个整型指针变量p并让它指向n,接着又定义了一指向指针的指针变量q。选项A中给指针变量p赋值q,故这个赋值语句正确。选项B中*p=*q就是将*q的值赋给指针变量p所指向的变量n,故这个赋值语句不是非法的赋值语句。选项C中是将*q的值赋给变量n,故这个表达式不是非法的赋值语句。选项D中p为一指针变量,应该将一地址赋给它,而在此选项的表达式中将变量n而不是n的地址赋给它,故这个表达式不合法。
更多“若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是(). A) p=q; B) *p=*q; C) n=*q; D) p=n;”相关问题
  • 第1题:

    若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是( )。A.p=q B.*p=*q C.n=*q D.p=*n


    正确答案:D
    n是一个整型变量,而非一个整型指针变量。

  • 第2题:

    (27)有以下程序

    #include <stdio.h>

    void f(int *p,int *q );

    main()

    { int m=1,n=2,*r=&m;

    f(r,&n);printf(“%d,%d”,m,n);

    }

    void f(int *p,int *q)

    {p=p+1;*q=*q+1;}

    程序运行后输出的结果是

    A)1,3 B)2,3 C)1,4 D)1,2


    正确答案:A

  • 第3题:

    设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是( )。

    A.p=1;

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案:D
    解析:本题中首先定义了整型变量n,其初值为0,接着定义一个指针变量p并让它指向n,然后定义了一个指向指针的指针变量q,并让它指向p。选项A中将常量1赋给指针p,而p的值应为地址,所以不正确。选项B中*p的值也应为地址,故将常量 2复制给*p不正确。选项C中将p的值赋给q,使q也指向p所指向的存储单元,该存储单元中存放的是常量0,而q被定义为一个指向指针的指针变量,它所指向的存储单元中应该存放的是地址值,故不正确。所以,4个选项中选项D符合题意。

  • 第4题:

    设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是 ______。

    A.*p=*q;

    B.p=q;

    C.*p=&n1;

    D.p=*q;


    正确答案:A
    解析:由定义*p=&n2,*q=&n1,p指向n2的地址,q指向n1的地址,即*p=n2,*q=n1,B、C、D选项只是让p也指向n1的地址,都没有将n1赋值给n2。

  • 第5题:

    有以下程序:

    main()

    { int a=7,b=8, *p, *q, *r;

    p=&a; q=&b;

    r=p; p=q; q=r;

    printf("%d,%d,%d,%d\n", *p,*q,a,b);

    }

    程序运行后的输出结果是【 】。


    正确答案:8778
    8,7,7,8 解析:本题中执行语句p=&a和q=&b后,*p=7,*q=8;执行完语句r=p,p=q,q=r后,*p=8,*q=7,故答案为8,7,7,8。

  • 第6题:

    有以下程序include<stdio.h>int*f(int*p,int*q);main( ){int m=1,n=2,*r=&m;r=f(r,&am

    有以下程序

    include<stdio.h>

    int*f(int*p,int*q);

    main( )

    {int m=1,n=2,*r=&m;

    r=f(r,&n);printf(”%d\n”,*r);

    }

    int-f(int*P,int*q)

    (return(*p>*q)?p:q;)

    程序运行后的输出结果是______。


    正确答案:2
    2 解析:函数f的返回值的类型是int*,作用是返回两个int*型指针所指变量中值大的那个指针的。本题中定义了一个int*型指针r并置初值&m,即指针r指向m。r=f(r,&n),由于m的值小于n值,所以f函数返回值为&n,所以输出为2,即n值。

  • 第7题:

    有以下程序

    #include<stdio.h>

    main( )

    { int m=1,n=2,*P=&m,*q=&n,*r;

    r=P;P=q;q=r;

    prinff(“%d,%d,%d,%d\n”,m,n,*P,*q);

    }

    程序运行后的输出结果是

    A.1,2,1,2

    B.1,2,2,l

    C.2,1,2,1

    D.2,1,1,2


    正确答案:B
    解析:m和n的值不变,输出结果为1,2;指针*p和*q交换了指向的位置,即十p=&n,*q=&m,输出结果分别为2,1。

  • 第8题:

    设有定义:int nl=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是( )。

    A.*p=*q;

    B.p=q;

    C.*p=&n1;

    D.p=*q;


    正确答案:A
    解析:在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句 n2=n1等价。因此选项 A正确。

  • 第9题:


    A.2m=n+p+q+r
    B.2m+1=n+p+q+r
    C.2m+2=n+p+q+r
    D.2m-2=n+p+q+r

    答案:C
    解析:

  • 第10题:

    设有定义:intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()

    • A、*p=*q;
    • B、p=q;
    • C、*p=&n1
    • D、p=*q;

    正确答案:A

  • 第11题:

    在RSA密钥生成过程中,在生成公钥(e,n)和私钥(d,n)过程中,我们需要对p,q,n,e,d等参数赋值并进行运算,n=pq,以下关于p,q,n,e,d的说法正确的是()

    • A、n是素数
    • B、n,p,q都是素数
    • C、n和p互素
    • D、gcd(e,(p-1)(q-1))=1

    正确答案:D

  • 第12题:

    单选题
    有以下程序:#include main(){ int m=1,n=2,*p=&m,*q=&n,*r; r=p;p=q;q=r; printf("%d,%d,%d,%d",m,n,*p,*q);}程序运行后的输出结果是(  )。
    A

    1,2,1,2

    B

    1,2,2,1

    C

    2,1,2,1

    D

    2,1,1,2


    正确答案: B
    解析:
    m和n的值不变,输出结果为1,2;指针*p和*q交换了指向的位置,即*p=&n,*q=&m,输出结果分别为2,1。答案选择B选项。

  • 第13题:

    设有定义:int n1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的是()。A)*p=*q; B)p=q;C)*p=&n1; D)p=*q;


    正确答案:A
    B项是将n1的地址赋给p,使p也指向n1,C项表达式错误,应该p=&n1,和B一样的效果,D项也是表达式错误。

  • 第14题:

    设有定义:int n1=0,n2,*p=&n2,*q=&n1;,下列赋值语句中与n2=n1;语句等价的是 ( )。

    A.*p=*q;

    B.p=q;

    C.*p=&n1;

    D.p=*q;


    正确答案:A
    解析: 在定义指针变量p和q时,分别把变量n2和n1的地址赋给了指针变量p和q,所以*p和*q中内容就分别是变量n2和n1的值,所以语句*p=*q与语句n2=n1等价。因此选项A)正确。

  • 第15题:

    设有定义int n=0,*p=&n,**q=&p;,则下列选项中正确的赋值语句是

    A.p=1;

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案:D

  • 第16题:

    设有定义:int n=0,*p=&n,**q=&p;,则以下选项中,正确的赋值语句是 ______。

    A.p=1;

    B.*q=2

    C.q=p

    D.*p=5


    正确答案:D
    解析:本题中n是int型变量,p是指向int型的指针变量,q是指向指针的指针变量,故正确答案为D。

  • 第17题:

    有以下程序includevoid f(int *p,int *q);main(){ int m=1,n=2,*r=&m;f(r, &n

    有以下程序 #include<stdio.h> void f(int *p,int *q); main() { int m=1,n=2,*r=&m; f(r, &n); printf("%d,%d",m,n); } void f(int*p,int*q) {p=p+1; *q=*q+1;) 程序运行后的输出结果是______。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    解析:本题主要考查函数实参和形参之间的传递,C语言规定,实参变量对形参变量的数据传递是“值传递”,即单向传递,只能由实参传绐形参,而不能由形参传回来给实参。f(r&n)把n的地址传递给q,通过地址传递的函数可以有返回值,因此,n的值为q的返回值3,又因为p是形参变量没有返回值,所以m的值没有改变,因此,选项A是正确的。

  • 第18题:

    若有如下程序: void s(char *m, int n) {*m=*m+3; n=n+3; printf("%c,%c,",*m,n); } main() {char p='b',q='B'; s(&q,p); printf("%c,%c\n",p,q); } 则程序运行后的输出结果是( )

    A.E,e,b,E

    B.e,E,b,F

    C.E,e,e,E

    D.e,E,b,E


    正确答案:A

  • 第19题:

    有下列程序: #include<stdi0.h> voidf(int*P,int*q); voidmain( ) (intm=1,n=2,*r=&m; f(r,&n);printf("%d,%d",m,n); } voidf(int*P,int*q)

    {p=p+1;*q=*q+1;} 程序运行后的输出结果是( )。

    A.1,3

    B.2,3

    C.1,4

    D.1,2


    正确答案:A
    A。【解析】本题中子函数f(int*p,*q)的功能是对指针p的值加1,*q的值加1。主函数中调用子函数f(r,&n)时,子函数的执行结果是r值加1,n的值加1。而m的值并没有发生变化,最后程序输出的结果为1,3。所以正确答案为选项A。

  • 第20题:

    有以下程序: #include<stdio.h> main( ) {int m=1,n=2,*p=&m,*q=&n,*r; r=P;P=q;q=r; printf("%d,%d,%d,%d\n",m,n,*P,*q); } 程序运行后的输出结果是( )。

    A.1,2,1,2

    B.1,2,2,1

    C.2,1,2,1

    D.2,1,1,2


    正确答案:B
    本题进行了交换,输出的4个值,前两个为m和n的值,*P取m的值,*q取n的值,分别为l和2;而“r=P;p=q;q=r;”语句是进行P和q的交换。所以本题输出结果为1,2,2,1。

  • 第21题:

    牵引端从动滑车绕出的滑车组,假设重物的重力为Q,滑车组的绳索数为n,则绳索的牵引作用力p为()。

    • A、p=n·Q;
    • B、p=Q/n;
    • C、p=Q/(n+1);
    • D、p=Q/n+1。

    正确答案:C

  • 第22题:

    若有说明:intn=2,*p=&n,*q=p,则以下非法的赋值语句是:()

    • A、p=q
    • B、*p=*q
    • C、n=*q
    • D、p=n

    正确答案:D

  • 第23题:

    单选题
    若有说明:intn=2,*p=&n,*q=p,则以下非法的赋值语句是:()
    A

    p=q

    B

    *p=*q

    C

    n=*q

    D

    p=n


    正确答案: D
    解析: 暂无解析

  • 第24题:

    单选题
    有以下程序:#include void f(int*p,int*q);main(){ int m=1,n=2,*r=&m; f(r,&n); printf("%d,%d",m,n);}void f(int*p,int*q){ p=p+1; *q=*q+1;}程序运行后的输出结果是(  )。
    A

    1,3

    B

    2,3

    C

    1,4

    D

    1,2


    正确答案: D
    解析:
    语句p=p+1;只改变指针p的地址,与p的内容无关,所以m值没有改变,而语句*q=*q+1;是改变该指针所指地址中的内容,所以n变为3,m不变,仍为1,答案选择A选项。