niusouti.com
参考答案和解析
正确答案: B
解析:
p为指针变量,存放变量的地址。对指针变量赋值,值必须是地址值。a为整型变量不是地址值,不能赋值给p,A项错误,应改为p=&a。数组名b为数组首地址,可以赋值给p,B项正确。c为指针变量,初始化为NULL,与p均为整型指针,可以将其赋值给p,C项正确。&为取地址运算符,&b[0]为数组元素b[0]的地址,可以赋值给p,D项正确。答案选择A选项。
更多“设有定义:int a,b[10],*c=NULL,*p;则以下语句错误的是(  )。”相关问题
  • 第1题:

    若有一些定义和语句 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。

  • 第2题:

    下列定义语句中,错误的是

    A.int px*;

    B.char*acp[10];

    C.char(*pac)[10];

    D.int(*p)();


    正确答案:A
    解析:B项定义了一个指针数组,正确。C项定义了一个指向字符数组的指针,即数组指针,正确。D项定义了一个指向返回值为整型量的函数的指针,即函数指针,正确。A项定义语句错误,本题选A。

  • 第3题:

    若有以下定义和语句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不指向任何变量,给一个空指针指向的单元赋值是错误的。

  • 第4题:

    设有定义“int a=3,b,*p=&a”,则下列语句中使b不为3的语句是______。

    A.b=*&a;

    B.b=*p;

    C.b=a;

    D.b=*a;


    正确答案:D

  • 第5题:

    设有以下定义的语句,则*(*(p+2)+1)的值为______。int a[3][2]={10,20,30,40,50,60}, (*p)[2];p=a;

    A.10

    B.30

    C.60

    D.40


    正确答案:C

  • 第6题:

    若有以下定义和语句,且0<=I<10,则对数组元素的错误引用是 ( )

    int a [ ]={1,2,3,4,5,6,7,8,9,0};

    int*p,I

    p=a;

    A.* (a+I)

    B.a[p-a]

    C.p+I

    D.* (&a[I])


    正确答案:C

  • 第7题:

    设有定义int x=5;,则执行以下语句后,x的值为______。 x+=x+5;

    A.10

    B.15

    C.20

    D.25


    正确答案:B

  • 第8题:

    有定义语句:“int*p[4];”,以下选项中与此语句等价的是( )。 A.int p[4];B.int**P;SXB

    有定义语句:“int*p[4];”,以下选项中与此语句等价的是( )。

    A.int p[4];

    B.int**P;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:D
    本题int*p[4]的作用是声明一个指针数组,每个元素都是int*型指针。

  • 第9题:

    设有定义语句“int a[]={2, 4,6,8,10},*p=s;”,则值为8的表达式是( )

    A.*p+3

    B.*p+4

    C.*(p+4)

    D.*(s+3)


    正确答案:D
    分析四个备选答案,可以看出是用指针法来引用数组a的元素。当指针变量p已经指向数组。的首地址后(正如本题那样),*(p+i)和*(s+i)都是数组元素a[i]。对于备选答案A:*p就是数组元素。a[0],其值为2,再加3结果为5,不符合题意。同样道理,备选答案B中的*p十4的值为6,也不符合题意。对于备选答案C:*(p+4)代表数组元素a[4],其值为10,也不符合题意。显然本题答案应选D。因为*(s+3)就是数组元素s[3],其值为8。

  • 第10题:

    若已有以下定义和语句: #include       int x=4,y=3,*p,*q,*s;  p=&x; q=&y; s=q; q=NULL;  则下面分别给出的四条语句中,错误的是()

    • A、*q=0;
    • B、s=p;
    • C、*p=x;
    • D、*p=*s;

    正确答案:A

  • 第11题:

    有语句:inta[10],;则()是对指针变量p的正确定义和初始化。

    • A、intp=*a;
    • B、int*p=a;
    • C、intp=&a;
    • D、int*p=&a;

    正确答案:B

  • 第12题:

    单选题
    若已有以下定义和语句: #include       int x=4,y=3,*p,*q,*s;  p=&x; q=&y; s=q; q=NULL;  则下面分别给出的四条语句中,错误的是()
    A

    *q=0;

    B

    s=p;

    C

    *p=x;

    D

    *p=*s;


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

  • 第13题:

    有定义语句:int*p[4],以下选项中与此语句等价的是( )。

    A.int p[4];

    B.int**p;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:C

  • 第14题:

    若有以下定义和语句: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选项为所选。

  • 第15题:

    设有定义:int x=o,* P;,立刻执行以下语句,正确的语句是( )。

    A.p=x;

    B.* p=x;

    C.p=NULL;

    D.* p=NULL;


    正确答案:C
    如果没有把P指向一个指定的值,*P是不能被赋值的。定义指针变量不赋初始值时默认为null。

  • 第16题:

    若有以下定义和语句 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。

  • 第17题:

    若有以下定义和语句 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是正确的:语句不是以逗号结尾的。

  • 第18题:

    若有一些定义和语句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选项为所选。

  • 第19题:

    设有定义语句“int x=10, *p=&x”,则表达式的值为10的有( )。

    A、p

    B、*p

    C、*&x

    D、*p=x

    E、x=*p


    参考答案BCDE

  • 第20题:

    设有定义语句“int a=10,*p=&a;”,则表达式“a十*p”的值是( )

    A.10

    B.20

    C.100

    D.语法出错


    正确答案:B
    在数据定义语句中的“*p=&a”,表示指针变量p已经指向变量a,所以表达式中的“*p”就是变量a,“a+*p”就是“a+a”,所以该表达式的值为20。本题答案应选B。

  • 第21题:

    设有定义:int a,*p=&a,* *pp=&p;,则与a=100;等价的语句为()A.**p=100;B.**pp=100;C.&

    设有定义:int a,*p=&a,* *pp=&p;,则与a=100;等价的语句为( )

    A.**p=100;

    B.**pp=100;

    C.&*p=100;

    D.*pp=10;


    正确答案:B

  • 第22题:

    设有C语句int a[3][4];, 则每次移动过a数组一行元素的指针变量定义形式是()

    • A、int *p;
    • B、int **p;
    • C、int(*p)[4];
    • D、int *p[4];

    正确答案:C

  • 第23题:

    单选题
    设有定义:int x=0,*p;紧接着的赋值语句正确的是(  )。
    A

    *p=x;

    B

    *p=NULL;

    C

    p=x;

    D

    p=NULL;


    正确答案: C
    解析:
    指针赋值的正确写法:①p=&x,表示p指向x的存储单元;②p=NULL,表示p是空指针。③*p=x,表示将p指向的内容赋值为x,但前提是p已进行了初始化。答案选择D选项。