更多“若有说明:int a=2, *p=a, *q=p;,则以下非法的赋值语句是()。A.p=q;B.*p=*q;C.a=*q;D.q=a;”相关问题
  • 第1题:

    设有定义: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符合题意。

  • 第2题:

    若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。A.D=aB.q[i]=a[i]C.p=a[l]D.

    若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。

    A.D=a

    B.q[i]=a[i]

    C.p=a[l]

    D.P=&a[2][1]


    正确答案:A
    数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。

  • 第3题:

    若有一些定义和语句 include int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q

    若有一些定义和语句 #include <stdio.h> int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=va;

    D.*p=*w;


    正确答案:A
    解析:给一指针赋空值的正确语句是q=NULL;或q='\0';或q=0;。选项B)的含义为使指针p指向指针q所指向的存储单元。选项C)的含义为使指针P指向变量a所在的存储单元。选项D)的含义为把指针a赋给指针p。

  • 第4题:

    若有定义语句:int a[4][10],* P,* q[4];且0<=i<4,则错误的赋值是( )。

    A.P=a

    B.q[i]=a[i]

    C.p=a[i]

    D.p=&a[2][1]


    正确答案:A
    二维数组名是指向指针的指针,所以a和q都为指向指针的指针,而P为指向int类型的指针。所以选项A)是将一个指向int类型的指针用来指向一个指针的指针,显然是错误的。其他几个选项都是正确的赋值,其中选项D)是用&返回整数的地址,然后赋值给P。

  • 第5题:

    以下程序段有错,错误原因是______。 main() { int *p,i;char *q,ch; p=&i;q=&ch;*p=40;*p=*q; }

    A.p和q的类型不一致,不能执行*p=*q;语句

    B.*p中存放的是地址值,因此不能执行*p=40;语句

    C.q没有指向具体的存储单元,所以*q没有实际意义

    D.q虽指向了具体的存储单元,但该单元中没有确定的值,所以不能执行*p=*q;语句


    正确答案:D
    解析:语句*p=*q:使指针p指向q所指向的存储单元,同时p得到该存储单元的内容及其类型,所以D项叙述正确。

  • 第6题:

    若有以下定义和语句:includeinta=4,b=3,*p,*q,*w;p=&a; q=&b; w=q; q=NULL;则

    若有以下定义和语句: #include<stdio.h> int a=4,b=3,*p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是( )。

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=*w;


    正确答案:A
    解析:本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将q指向NULL。因为q指向NULL,所以选项A中对q所指地址进行写入是非法的。故A选项为所选。

  • 第7题:

    设有以下程序段: int a[5]={0},*p,*q; p=a; q=a; 则下列选项中,合法的运算是

    A.p*q

    B.p-q

    C.p*q

    D.p%q


    正确答案:B
    解析:本题考核指针的运算。 C++语言中,指向同一字符串的指针之间可以,也只能进行减运算,减运算后返回的是一整型数,表示指针之间的地址偏移量。

  • 第8题:

    若有以下定义和语句 int a=4.b=3.* p, * q, * w; p=&a;q=& b; w=q;q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=* w;


    正确答案:D
    解析:考生遇到这么复杂的变量间关系时,可以在草稿纸上画出各个变量的内存存放示意图,然后用箭头指向表示指针变量与其他变量之间的关系。如果能够清晰的画出这些变量间关系,则可以会让你容易的判断出正确答案为D。

  • 第9题:

    以下程序有错,错误的原因是main(){ int *p,i;char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ......}A.p和q的类型不一致,不能执行*p=*q;语句B.*p中存放的是地址值,因此不能执行*p=40;语句C.q没有指向具体的存储单元,所以*q没有实际意义D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果


    正确答案:D
    在本题中,题目要求我们分析给出程序段错误的原因。我们可以结合选项和程序段来分析。
    在C语言中,是可以将字符型的变量赋值给整型变量的,主要是由于字符型是以ASCII码存储在计算机中的,在赋值的过程中,系统会将其对应的ASCII码值赋给整型变量,选项A描述的错误原因是不成立的。
    *p表示的是数值,而非地址,*p=40;语句是合法的语句,选项B描述的错误原因也是不成立的。虽然q没有指向具体的存储单元,但*q的实际意义仍然是一样的,选项C描述的错误原因是不成立的。
    执行*p=*q;操作没有实际的意义,因为指针变量q所指向的存储单元没有确定的值,用一个没有值的变量对其他变量赋值,没有实际意义,而且还可能影响后面语句的执行结果,D选项描述的错误原因是正确的。

  • 第10题:

    若有定义语句:"int a[4][10],*P,*q[4];"且0≤i<4,则错误的赋值是( )。

    A.D=a

    B.q[i]=a[i]

    C.p=a[l]

    D.P=&a[2][1]


    正确答案:A
    数组名是一个存放一个数组首地址的值,是一个地址常量。而p=a不是合法的,因为p和a的基本类型不同。

  • 第11题:

    下列哪个式子不能表达“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

  • 第12题:

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

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

    正确答案:D

  • 第13题:

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

    A.p=1;

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案: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=&n2,*q=&n1,p指向n2的地址,q指向n1的地址,即*p=n2,*q=n1,B、C、D选项只是让p也指向n1的地址,都没有将n1赋值给n2。

  • 第15题:

    现有如下定义:int a,b,*p,*q;,则下列赋值语句错误的是

    A.p=&a;

    B.q=&b;

    C.p=q;

    D.p=a;


    正确答案: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题:

    若有定义语句:int u[4][10],*P,*q[4];且0≤i<4,则错误的赋值是

    A.p=a

    B.q[i]=a[i]

    C.p=a[i]

    D.p=&a[2][1]


    正确答案:A
    解析:直接将二维数组a赋给p不合法,两者类型不匹配。

  • 第18题:

    若有以下定义和语句includeint a=4,b=3,*p,*q,*w;p=&a;q=&b;w=q;q=NULL;则以

    若有以下定义和语句 #include<stdio.h> int a=4,b=3,*p,*q,*w; p=&a;q=&b;w=q;q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=*w;


    正确答案:A
    解析:本题中定义了3个指向整型的指针变量p、q、w,并让P指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整型变量指针的定义可知,可以给整型指针指向的变量赋一个常数值(表达式);可以给指针变量赋一个同种类型的指针变量(或地址值);选项A因为q不指向任何变量,给一个空指针指向的单元赋值是错误的。

  • 第19题:

    以下程序有错,错误原因是

    main()

    { int *p,i;char *q,ch; p=&i;q=&ch;

    *p=40;*p=*q;

    ... }

    A.p和q的类型不一致,不能执行*p=*q;语句

    B.*p中存放的是地址值,因此不能执行*p=40;语句

    C.q没有指向具体的存储单元,所以*q没有实际意义

    D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行*p=*q;没有意义,可能会影响后面语句的执行结果


    正确答案:D
    解析:该程序的执行过程是:首先声明整型指针变量p和整型变量i,字符型指针变量q和字符型变量ch,将i的地址赋给指针变量p,将ch的地址赋给指针变量q,将40赋给*p,此时,q已经指向了一个具体的存储单元,但ch的值不确定,即*p没有确定的值,所以不能执行*p=*q语句。

  • 第20题:

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

    A.p=1

    B.*q=2;

    C.q=p;

    D.*p=5;


    正确答案:D
    解析:选项A),B),C)的指针赋值表达方式都不正确,*p=5表示将整数5放到指针p所向的存储 单元中。

  • 第21题:

    若有以下定义和语句 int a=4,b=3,*p, *q, *w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

    A.*q=0

    B.w=p

    C.*p=a;

    D.*p=*w;


    正确答案:D
    解析:指针是一个既强大又危险的技术,C/C++语言之所以灵括高效,原因之一就是采用了指针技术,所以c/C++特别适合开发系统软件和工具软件.在C#语言中已经取消了指针,而且全部属于托管代码。而在dotnet框架中,为了保持兼容性,仍然可以使用C++,但分托管和非托管代码。本题实际上有个圈套,只要注意到题干中“语句”,而且注意到各个选项中都有分号结尾,就可以判断选项D是正确的:语句不是以逗号结尾的。

  • 第22题:

    若有一些定义和语句include inta=4, b=3, *p,*q,*w;p=&a;q=&b;w=q;q=NULL;则

    若有一些定义和语句 #include <stdio.h> int a=4, b=3, *p,*q,*w; p=&a; q=&b; w=q; q=NULL; 则以下选项中错误的语句是

    A.*q=0;

    B.w=p;

    C.*p=a;

    D.*p=*w;


    正确答案:A
    解析:本题考核的知识点是指针变量的使用与空指针(NULL)基本概念.本题中定义了3个指向整型的指针变量p、q、w,并让p指向a,让q指向b,通过将q的值赋给w,使w也指向b,最后将NULL赋值给q。由整形变量指针的定义可知,可以给整型指针指向的变量赋一个常数值(表达式),故选项C和选项D是正确的;可以给指针变量赋一个同种类型的指针变量(或地址值),故选项B也是正确的;选项A错误,因为q不指向任何变量,给一个空指针指向的单元赋值是错误的。所以,A选项为所选。

  • 第23题:

    以下程序有错,错误原因是( )。 main() { int *p,i; char *q,ch; p=&i; q=&ch; *p=40; *p=*q; ┇ }

    A.p和q的类型不一致,不能执行*p=*q;语句

    B.*p中存放的是地址值,因此不能执行*p=40;语句

    C.q没有指向具体的存储单元,所以*q没有实际意义

    D.q虽然指向了具体的存储单元,但该单元中没有确定的值,所以执行语句*p=*q;没有意义,可能会影响后面语句的执行结果


    正确答案:D
    解析:在该程序中,首先声明整型指针变量p和整型变量i,字符型指针变量q和字符型变量ch,将i的地址赋给指针变量p,将ch的地址赋给指针变量q,然后将40赋给*p。此时,虽然q已经指向了一个具体的存储单元,但ch的值不确定,即*q没有确定的值,所以不能执行*p=*q;语句。

  • 第24题:

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

    p=q

    B

    *p=*q

    C

    n=*q

    D

    p=n


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