itgle.com

单选题若有定义语句:double a,*p=&a;以下叙述中错误的是(  )。A 定义语句中的p只能存放double类型变量的地址B 定义语句中的*号是一个说明符C 定义语句中的*号是一个间址运算符D 定义语句中*p=&a把变量a的地址作为初值赋给指针变量p

题目
单选题
若有定义语句:double a,*p=&a;以下叙述中错误的是(  )。
A

定义语句中的p只能存放double类型变量的地址

B

定义语句中的*号是一个说明符

C

定义语句中的*号是一个间址运算符

D

定义语句中*p=&a把变量a的地址作为初值赋给指针变量p


相似考题
更多“若有定义语句:double a,*p=&a;以下叙述中错误的是(  )。”相关问题
  • 第1题:

    若有定义语句:“int year=2009,*p=&year;”,以下不能使变量year中的值增至2010的语句是( )。

    A.*p+=1;

    B.(*p)++;

    C.++(*p);

    D.*++P


    正确答案:D

  • 第2题:

    若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0},*p=x;则错误引用x数组元素的是______。

    A.*p

    B.x[5]

    C.*(p+1)

    D.*x


    正确答案:B
    解析:本题定义了一个有5个数组元素的—维数组x和指针变量p,且将x的首地址(即x[0])的地址)赋给了指针变量p,即p指向了x数组的第0号元素,所以*p的值为x[0]的值,选项A的引用正确;由于p+1就是x[1]的地址,所以*(p+1)所指向的数组元素为x[1],故选项C的引用正确;由于x就是数组x的首地址,所以*x即对x[0]的引用,所以选项D引用正确;由于数组最大下标是元素个数减一,所以选项B的引用越界。

  • 第3题:

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

  • 第4题:

    若有定义语句:double a,*p=&a;,以下叙述中错误的是( )。A.定义语句中的*号是一个间址运算符SXB

    若有定义语句:double a,*p=&a;,以下叙述中错误的是( )。

    A.定义语句中的*号是一个间址运算符

    B.定义语句中的*号是一个说明符

    C.定义语句中的p只能存放double类型变量的地址

    D.定义语句中,*p=&a把变量a的地址作为初值赋给指针变量P


    正确答案:A
    在变量定义doublea,*p:&a;中,*号是一个指针运算符,而非间址运算符,因此A)错误。

  • 第5题:

    若有定义“double a;”,则正确的输入语句是( )。A.seaM("%1f",a);B.scanf("%f",&a);SXB

    若有定义“double a;”,则正确的输入语句是( )。

    A.seaM("%1f",a);

    B.scanf("%f",&a);

    C.scanf("%1f",&a)

    D.scanf("%1e",&a);


    正确答案:D
    本题考查seanf函数的调用形式:scanf(格式字符串,输入项地址表)。题中定义变量a为双精度型变量,双精度变量的格式符为“le”;变量的地址用取地址符“&”加变量名表示,所以选项D正确。

  • 第6题:

    若有定义语句:double a,+P=&a;以下叙述中错误的是( )。A.定义语句中的*号是一个问址运算符

    若有定义语句:

    double a,+P=&;a;

    以下叙述中错误的是( )。

    A.定义语句中的*号是一个问址运算符

    B.定义语句中的*号是一个说明符

    C.定义语句中的P只能存放double类型变量的地址

    D.定义语句中。P=&a把变量a的地址作为初值赋给指针变量P


    正确答案:A
    指针运算符(通常称为间接引用运算符:indirectionopemlor或复引用运算符:derefereneingoperator)返回其操作数(即一个指针)所指向的对象的值。定义语句中的+号不是一个问址运算符,而是定义指针变量的说明符,因此,A项错误,B选项正确,原则上说变量P可以放double兼容性的变量地址,C选项正确,根据指针的赋值运算,可知D选项正确。故答案为A选项。’

  • 第7题:

    若有以下定义和语句: double r=23,*p=&r; *p=r;则以下正确的叙述是______。

    A.两处的*p含义相同,都说明给指针变量p赋值

    B.在“double r=23,*p=&r;”中,把r的地址赋值给了p所指的存储单元

    C.语句“*p=r;”把变量r的值赋给指针变量p

    D.语句“*p=r;”取变量r的值放回r中


    正确答案:D
    解析:*p=&r使p指向变量r的地址,*p=r是再取变量r的值,并放回r中。

  • 第8题:

    若有定义语句:int year=2009,*p=&year;,以下不能使变量year中的值增至2010的语句是

    A.*p+=1;

    B.(*p)++;

    C.++(*p);

    D.*p++;


    正确答案:D
    解析:++的优先级比木的高,所以先运算p++,使得p指向了year变量的下一个存储单元中的内容,然后在取其中的值,得到的一个没有意义的数字,*p++自然就不对了。

  • 第9题:

    若有以下定义语句: double a[5],*p=a; int i=0; 对a数组元素错误的引用是( )

    A.a[i]

    B.a[5]

    C.p[4]

    D.p[i]


    正确答案:B

  • 第10题:

    (28)若有定义语句:char s[3][10],(*k)[3],*p;,则以下赋值语句正确的是

    A)p=s;

    B)p=k;

    C)p=s[0];

    D)k=s;


    正确答案:C

  • 第11题:

    若有函数定义:double fun(int a[10]){...},则在对该函数进行原型声明时,错误的声明语句是()

    • A、double fun(int[])
    • B、double fun(intb[10])
    • C、double fun(inta)
    • D、double fun(int*a)

    正确答案:C

  • 第12题:

    单选题
    若有定义语句:int year=2009,*p=&year;,以下不能使用变量year中的值增至2010的语句是(  )。
    A

    *p+=1

    B

    (*p)++;

    C

    ++(*p);

    D

    *p++;


    正确答案: D
    解析:
    A项,p所指内容执行增1操作;B项,先取P指针所指的内容,再执行后++运算;C项,先取P指针所指内容,再执行前++运算;D项,实际上是p指针执行++操作,而后取值。答案选择D选项。

  • 第13题:

    若有定义语句:double a,*p=&a;,以下叙述中错误的是( )。 A.定义语句中的*号是一个间址运算符S

    若有定义语句:double a,*p=&a;,以下叙述中错误的是( )。

    A.定义语句中的*号是一个间址运算符

    B.定义语句中的*号只是一个说明符

    C.定义语句中的P只能存放double类型变量的地址

    D.定义语句中,*p=&n把变量a的地址作为初值赋给指针变量P


    正确答案:C
    doublea,*p=&a语句的意思是将a的值存放到指针变量P中,P是指针可以随意指向任何地址,所以答案C错误。

  • 第14题:

    若有以下定义和语句:“double r=99,*p=&r;*P =r;”,则以下正确的叙述是( )。

    A.两个*p含义相同,都说明给指针变量p赋值

    B.在“double r=99,*p=&r;”中,把r的地址赋值给了P所指的存储单元

    C.语句“*p=r;”把变量r的值赋给指针变量P

    D.语句“*p=r;”取变量r的值放回r中


    正确答案:B
    在定义*p=&r时,是表示r的地址赋给了p所指的存储单元,因此选项B正确。

  • 第15题:

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。A.p=a; B.p[0]=a;

    若有定义语句:int a[2][3],*p[3];,则以下语句中正确的是( )。

    A.p=a;

    B.p[0]=a;

    C.p[o]=&a[1][2];

    D.p[1]=&a;


    正确答案:B
    选项B表示把整型数组a[o]的指针赋给p[0]。

  • 第16题:

    若有说明语句:double*P,a;则通过scanf语句正确给输入项读人数据的程序段是( )。A.B.C.D.A.ASX

    若有说明语句:double*P,a;则通过scanf语句正确给输入项读人数据的程序段是( )。A.

    B.

    C.

    D.

    A.A

    B.B

    C.C

    D.D


    正确答案:D
    double*P,a定义了一个指向双精度型的指针变量P和双精度型变量a,p=&a表示将变量a的地址赋给指针变量P;scanf(”%If”,p)表示用键盘输入的数赋给指针变量P所指向的地址单元中,scanf()函数要求在输入double型数据时,格式控制符必须用%lf。否则,数据不能正确输入。所以选项D正确。

  • 第17题:

    若有定义语句:double a,*P=&a;以下叙述中错误的是( )。

    A.定义语句中的*号是-个间址运算符

    B.定义语句中的木号是-个说明符

    C.定义语句中的P只能存放double类型变量的地址

    D.定义语句中,P=&a把变量a的地址作为初值赋给指针变量P


    正确答案:A
    在变量定义doublea,*P:&a;中,}号是一个指针运算符,而非间址运算符,所以A错误。

  • 第18题:

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

  • 第19题:

    若有定义语句:double a,*p=&a;以下叙述中错误的是

    A.定义语句中的*号是一个间址运算符

    B.定义语句中的*号只是一个说明符

    C.定义语句中的p只能存放double类型变量的地址

    D.定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p


    正确答案:A
    解析:本题中的*p=&a中,*不是间址运算符,只是一个指针说明符。间址运算符用于表示某变量是指针型数据,用于存放某个地址,例如int*p,k;p=&k;*p=2;这里的*就是间址运算符。

  • 第20题:

    若有以下定义和语句; double r=99,*p=7; *p=r; 则以下正确的叙述是( )

    A.两处的*p含义相同,都说明给指针变量P赋值3

    B.在“double r=99,*p=7;*p=r;”中,把r的地址赋给了p所指的存储单元

    C.语句“*p=r;”把变量r的值赋给指针变量p

    D.语句“*p=r;”把变量r的值放回P中


    正确答案:D

  • 第21题:

    试题23

    若有定义语句:double a, *p=&a; 以下叙述中错误的是()

    A.定义语句中的*号是一个间址运算符

    B.定义语句中的*号只是一个说明符

    C.定义语句中的p只能存放double类型的变量

    D.定义语句中,*p=&a把变量a的地址作为初值赋给指针变量p


    正确答案:A
    试题23分析
    *号只是一个说明符,而非间址运算符。说明只能存放double类型的变量。
    试题23答案
    A

  • 第22题:

    若有说明语句:      Double *p,a;  则能通过scanf语句正确给输入项读人数据的程序段是()    

    • A、*p=&a;scanf(”%if”,p);
    • B、*p=&a;scanf(”%f”,p);
    • C、p=&a;scanf(”%if”,*p);
    • D、p=&a;scanf(”%if”,p);

    正确答案:D

  • 第23题:

    单选题
    若有定义语句:double x[5]={1.0,2.0,3.0,4.0,5.0}, *p=x;则错误引用x数组元素的是(  )。
    A

    * p

    B

    x[5]

    C

    *(p+1)

    D

    *x


    正确答案: C
    解析:
    引用一维数组元素有多种方式。直接引用的表达式为:数组名[下标],数组大小为n时,下标的取值范围为0~(n-1),所以本题中x的下标为0~4,x[5]溢出,B项错误。此外还可以通过指针引用一维数组元素。指针p指向该数组,所以*p表示x[0],A项正确;指针p+1指向数组x的第二个元素的地址,*(p+1)表示引用x的第二个元素,C项正确;x为x数组元素的首地址,*x表示对x[0]的引用,D项正确。答案选择B选项。

  • 第24题:

    单选题
    若有定义语句int a,b,c,*p=&c;接着执行以下选项中的语句,则能正确执行的语句是(  )。
    A

    scanf("%d%d%d",a,b,c);

    B

    scanf("%d",p);

    C

    scanf("%d",a,b,c);

    D

    scanf(%d,&p);


    正确答案: C
    解析:
    scanf中地址列表需要取地址,即&a形式,故AC项错误;p为指针类型,本身就是c的地址,因此不用再取地址。答案选择B选项。