参考答案和解析
int* p=&a;
更多“有以下语句 int a[]={0,1,2,3,4},*p; p=&a[2]; 则语句p++; 执行后,指针p指向的元素值是 .”相关问题
  • 第1题:

    语句int*p=&k;定义了指针p,与这个语句等效的语句序列是

    A.int*p;p=&k;

    B.int*p;p=k;

    C.int*p;*p=&k;

    D.int*p;*p=k;


    正确答案:A
    解析:本题考查的知识点是:指针的赋值。题目中的语句int*p=&k;有两个作用:首先,定义了一个int型指针p;然后,将变量k的地址&k赋给刚定义的指针p。所以等效的语句序列为:int*p;p=&k;,应该选择A。

  • 第2题:

    假定p所指对象的值为25,p+1所指对象的值为46,则执行“*p++;”语句后,p所指的对象的值为【 】。


    正确答案:46
    46 解析:*P++ 的结合顺序为先执行p++,然后取值。答案为46。

  • 第3题:

    在下列叙述中,正确的一条是( )

    A.语句int *pt中的*pt是指针变量名

    B.语句"int *p=a;"等价于"int *p;p=&a[0];”

    C.运算符*和&都是取变量地址的运算符

    D.已知指针变量p指向变量a,则&a和*p值相同,都是变量a的值


    正确答案:D

  • 第4题:

    有如下定义语句:int a[]={1,2,3,4,5};,则对语句int*p=a;正确的描述是( )。

    A.语句int*p=a;定义不正确

    B.语句int*p=a;初始化变量p,使其指向数组对象a的第一个元素

    C.语句int*p=a;是把a[0]的值赋给变量p

    D.语句iht*p=a;是把a[l]的值赋给变量p


    正确答案:B

  • 第5题:

    若有以下定义和语句: int a[]={1,2,3,4,5,6,7,8,9,10},*p=a; 则值为3的表达式是______。

    A.p+=2,*(p++)

    B.p+=2,*++p

    C.p+=3,*p++

    D.p+=2,++*p


    正确答案:A
    解析:引用一个数组元素,可以用:(1)下标法,如a[i]形式:(2)指针法,如*(a+i)或*(p+i)。数组的下标从0开始,值为3的数组元素是a[2]。B、C的内容为a[3],D将a[2]前自加,结果为4。

  • 第6题:

    若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确语句是( )

    A.p=2 *(int *)malloc(sizeof(int));

    B.p=(int*)calloc(2*sizeof(int));

    C.p=(int*)malloc(2* sizeof(int));

    D.p=2 *(int*)calloc(sizeof(int));


    正确答案:C

  • 第7题:

    指针变量p的基类型为int,并已指向一连续存储区,若p中当前的地址值为1234,则执行p++后,p中的值为 ( )

    A.1234

    B.1235

    C.1236

    D.1237


    正确答案:C

  • 第8题:

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

    A.*p+=1;

    B.(*p)++;

    C.++(*p);

    D.*p++;


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

  • 第9题:

    下列程序的功能是输出数组中的最大值,其中用指针q指向该元素,在if语句中判断表达式应该是 ______。 #include<iostream.h> void main(){ int a[10]={6,7,2,9,1,10,5,8,4,3); int *p=a,*q=a; while(p-a<10){ if(_____)q=p; { p++; } cout<<”max=”<<*q; }

    A.ap>Aq

    B.*p>*q

    C.p>q

    D.p-a>p-q


    正确答案:B

  • 第10题:

    已知指针p的指向如下图所示,则执行语句“--p;”后p的值是______。

    A.30

    B.20

    C.19

    D.29


    正确答案:B

  • 第11题:

    有以下说明语句:struct Student{int num;double score;};Student stu[3]={{1001,80},{1002,75},{1003,91}},*p=stu;则下面引用形式错误的是()

    • A、p->num
    • B、(p++).num
    • C、(p++)->num
    • D、(*p).num

    正确答案:B

  • 第12题:

    单选题
    若已定义:int x=12;对①int *p=&x;和②*p=x;这两条语句的正确理解是()
    A

    语句①是在对指针变量p定义时初始化,使p指向x;而语句②是将变量x的值赋给指针变量p所指向的变量

    B

    语句①和②中的*p含义相同,都表示给指针变量赋值

    C

    语句①是在对指针变量p定义时初始化,使p指向x;而语句②是将变量x的值赋给指针变量p

    D

    语句①和②的执行结果都是把变量x的地址赋给指针变量p


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

  • 第13题:

    设有语句:“int a=1,b=2,*p1=&a,*p2=&b;”,则使指针p1指向变量b的赋值语句是______。

    A.p1=*p2

    B.*p1=p2

    C.p1=p2

    D.*p1=*p2


    正确答案:D
    解析:对于定义int*p,*q;,可以通过赋值语句p=q;,把指针变量q中的地址值赋给指针变量p,从而使这两个指针变量指向同一地址。

  • 第14题:

    以下程序的功能是:借助指针变量找出数组元素中最大值所在的位置并输出该最大值。请在输出语句中填写代表最大值的输出项。

    include<stdio.h>

    main( )

    {int a[10],*p,*S;

    for(p=a;p-a<10;p++)scanf(”%d”,p);

    for(p=a,s=a;p-a<10;p++)if(*p>*s)s=p;

    printf(”max=%d\n”,________);

    }


    正确答案:*s
    *s 解析:首先依次输入10个数,存入数组a中。循环语句依次查找数组的元素,当*P的值大于*s时,s=p即找到当前数组中最大值,然后再将其余元素与新的*S元素比较,最终求得最大值。所以填*s。

  • 第15题:

    语句int*p=&k;定义了指针p,与这个语句等效的语句序列是A.int*p;p=&k;B.int*p;k=k;C.int*p;*p=&am

    语句int*p=&k;定义了指针p,与这个语句等效的语句序列是

    A.int*p;p=&k;

    B.int*p;k=k;

    C.int*p;*p=&k;

    D.int*p;*p=k;


    正确答案:A

  • 第16题:

    有如下定义语句:int a[]={1,2,3,4,5);,则对语句int *p=a;正确的描述是( )。

    A.语句int *p=a;定义不正确

    B.语句int *p=a;初始化变量p,使其指向数组对象a的第一个元素

    C.语句int *p=a;是把a[0]的值赋给变量p

    D.语句int *p=a;是把a[1]的值赋给变量p


    正确答案:B

  • 第17题:

    在下面语句中,其含义为“p为指向含n个元素的一维数组的指针变量”的定义语句是 ( )

    A.int p [n]

    B.int * p( );

    C.int * p(n);

    D.int( * p)[n]


    正确答案:D

  • 第18题:

    若有定义“floata=25,b,*p=&b;”,则下列对赋值语句“*p=a;”和“p=&a;”的正确解释为( )。

    A.两个语句都是将变量a的值赋予变量p

    B.*p=a是使P指向变量a,而P=&a是将变量的值赋予变量指针p

    C.*p=a是将变量a的值赋予变量b,而&;a是使P指向变量a

    D.两个语句都是使p指向变量a


    正确答案:C
    “p”是指针变量,指向一个地址:“*p”为p指针所指向地址的内容。“&”是取变量地址。

  • 第19题:

    在下列叙述中,错误的一条是______。

    A.有下列语句组,则c=(*p)(a,b)与c=max(a,b)等价 int max();int(*p)();int c;p=max;

    B.执行下列语句后,则*p的值为1 int a=1,*p;*p=&a;

    C.已知指针变量p1指向数组元素a[1],p2指向数组元素a[4],则p2-p1=4-1=3

    D.2个指针变量指向同一数组时可以进行比较,其值为1或0


    正确答案:B

  • 第20题:

    设int x[ ]={2,4,6,8},y,*p=&x[1];则执行语句y=(*--p)++;后数组元素x[0]的值为 ______。

    A.2

    B.3

    C.4

    D.5


    正确答案:B

  • 第21题:

    若指针p已正确定义,要使p指向两个连续的整型动态存储单元,则正确的语句是( )。

    A.p=2*(int*)malloc (sixeof(int))

    B.p=(int*)calloc (2*sixeof(int))

    C.p=(int*)malloc (2*sizeof(int))

    D.p=2*(int*)calloc (sizeof(int))


    正确答案:C
    解析:malloc函数的调用形式:malloc(size)。malloc函数用来分配size个字节的存储区,返回一个指向存储区首地址基类型为void的地址,可以利用强制类型转换将其换成所需的类型,这里需转换为整型(int*)。若不能确定数据类型所占的字节数,可使用sizeof运算符来求得,这里要求两个连续的整型动态存储单元即2*sizeof(int)。4个选项中只有C符合题意。

  • 第22题:

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

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

    正确答案:C

  • 第23题:

    若已定义inta=5;下面对(1)int*p=&a;(2)*p=a;两个语句的正确解释是()

    • A、语句(1)和(2)中的*P含义相同,都表示给指针变量p赋值
    • B、语句(1)和语句(2)的执行结果,都是把变量a的地址值赋给指针变量p
    • C、语句(1)在对p进行说明的同时进行初始化,使p指向a,语句(2)将变量a的值赋给指针变量p
    • D、语句(1)在对p进行说明的同时进行初始化,使p指向a,语句(2)将变量a的值赋于*p

    正确答案:D

  • 第24题:

    单选题
    若有定义语句: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选项。