更多“下列有关指针的用法中错误的是()。A.int i;int *p=&i;B.int i;int *p;i=*p;C.int *p;p=0;D.in ”相关问题
  • 第1题:

    以下对指针变量的操作中,不正确的是()。

    A.int p, *q; q=&p;

    B.int *p, *q; q=p=NULL;

    C.int a=5, *p; *p=a;

    D.int a=5, *p=&a, *q=&a; *p=*q;"


    参考答案C

  • 第2题:

    程序中有如下语句for(int i=0;i<5;i++)cout<<*(p+i<<“,”;能够依次输出int型一维数组a的前5个元素。由此可知,变量P的定义及初始化语句是( )。

    A.int*p=a;

    B.int p=a;

    C.*p=a;

    D.p=a;


    正确答案:A
    解析: 从循环语句中可以看出,是在0到4的循环中输出数组a中的前5个元素,输出的值为*(p+i),即为指针p向后移动指向的元素。所以初始化要将指针p指向数组a,即int*p=a;。

  • 第3题:

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

    A.int p[4];

    B.int**p;

    C.int*(p[4]);

    D.int(*p)[4];


    正确答案:C

  • 第4题:

    下列有关指针的用法中错误的是( )。

    A.int i;int *ptr=&i;

    B.inti;int *ptr;i=*ptr;

    C.int *ptr;ptr=0;

    D.int i=5;int *ptr;*ptr&i;


    正确答案:B

  • 第5题:

    以下函数返回a所指数组中最大值所在的下标值fun(int *a,int n){ int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]>a[p])_________; return(p);}在下画线处应填入的内容是A.i=p B.a[p]=a[i] C.p=i D.p=j


    正确答案:C
    该题目所要求的是最大数的位置(下标),而不是最大数的数值。因此,在进行逐个比较的过程中,需要记录最大数的下标i。根据给出的程序可知,该下标记录在变量p中,所以,如果a[i]>a[p]这一关系成立,应该把i的值赋给p,这样才满足题目的要求。

  • 第6题:

    以下程序输出正确的是______。 amovep(int *pint(*a) [3]int n) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++){ *p=a[i][j];p++;} } main() {int *p,a[3][3]={{1,3,5},{2,4,6}}; p=(int*)malloc (100); amovep(p,a,3); printf("%d%d\n",p[2]p[5];free(p); }

    A.56

    B.25

    C.34

    D.程序错误


    正确答案:A
    解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别为:a[0][0]=1,a[0][1]=3,a[0][2]=5……,a[2][0],a[2][1]=0,a[2][2]=0。通过mallo()函数绐指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参p,实参数组a与形参中指向数组的指针变量共用同—存储空间。最后输出p[2],p[5]为56。

  • 第7题:

    已知:int n=10;那么下列语句中错误的是

    A.int*p=new long[n];

    B.int p[n];

    C.int*p=new long(n);

    D.int p[10];


    正确答案:B
    解析:本题考核指针、数组和new运算符。运算符new用于动态申请存储空间,它的操作数为某种数据类型且可以带有初值表达式或元素个数,若带初值,则其表达式为:指针>=new类型>(初值),如C选项所示,若带有元素个数,则其语法格式为:指针>=new类型>[元素个数>],如A选项所示。数组定义中数组大小必须为常量,而B选项中的n为一变量所以是错误的。

  • 第8题:

    在以下选项中,操作不合法的一组是______。

    A.int x[6],*p;p=&x[0];

    B.int x[6],*p;*p=x;

    C.int x[6],*p;p=x;

    D.int x[5],p;p=x[0];


    正确答案:B
    解析:对于A和C都可使p指向数组x的首地址。D是把数组元素x[0]赋给p。

  • 第9题:

    以下程序段完全正确的是( )。 A.int*P;scanf("%d",&p);B.int*P;scanf("%d",p);SX

    以下程序段完全正确的是( )。

    A.int*P;scanf("%d",&p);

    B.int*P;scanf("%d",p);

    C.int k,*p=&k;scanf("%d",p);

    D.int k,*p;*p=&k;scanf("%d¨,p);


    正确答案:C
    A中P是指针,没有初始化,且取P的地址即类型为指向地址的地址,与输出参数类型不符。B中指针P没有初始化,且P所指变量值不明。D*p是整型变量,&k是整型变量的地址。所以选C。

  • 第10题:

    以下函数返回a所指数组中最小的值所在的下标值 fun(int *a,int n) { int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]<a[p])______; return(p);} 在下划线处应填入的是

    A.i=p

    B.a[p]=a[i]

    C.p=j

    D.p=i


    正确答案:D
    解析:该程序先判断a[i]a[p],如果条件为真,则a[i]比当前的设定的最小值小(p保留的当前最小元素的下标),那么将i赋给p即将比较过的最小的元素下标保留在p中,作为下面判断的标准。

  • 第11题:

    以下函数返回a所指数组中最大值所在的下标值: fun(int *a,int n) { int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]>a[p])______; return(p); } 在下划线处应填入的内容是( )。

    A.i=p

    B.a[p]=a[i]

    C.p=j

    D.p=i


    正确答案:D
    解析:该题目要求的是最大数的位置(下标)。程序通过对a所指数组中的元素进行逐个比较,记录最大数的下标i,并把该下标记录在变量p中,所以,如果a[i]>a[p]关系成立,应该把i的值赋给p,这样才满足题目的要求。

  • 第12题:

    单选题
    下列有关指针的用法中,错误的是(  )。
    A

    int i;int *p=&i;

    B

    int i;int *p;i=*p;

    C

    int *p;p=0;

    D

    int i=5;int *p;p=&i;


    正确答案: B
    解析:
    A项正确,“int *p=&i;”定义整型指针变量p,初始化指向整型i;B项错误,指针p没有初始化;C项正确,“p=0;”表示p指向内存的地址为0;D项,p存放i的地址。

  • 第13题:

    若已定义x为int类型变量,说明指针变量p的正确语句是______。

    A.int p=&x;

    B.int*p=x;

    C.int *p=&x;

    D.*p=*x;


    正确答案:C

  • 第14题:

    语句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

  • 第15题:

    有以下程序fun(int *a,int n) { int i,j=0,p; p=j; for(i=j;i<n;i++) if(a[i]<a[p]) ____; return(p);}在下画线处应填入的是A.i=p B.a[p]=a[i] C.p=j D.p=i


    正确答案:D
    本题考查对程序作用的理解。该函数具有两个形参a和n,a为数组名,n为数组中元素的个数。函数的返回值为p,这里p为数组的下标。初始时,i、j、p都为0,for循环的初始表达式为i=j,条件表达式为i<n,也就是当i=n时,for循环结束。该for循环表达的含义为:初始时,令a[i]=a[p]=a[0],随后i可从0开始递增,直到n-1,对于每一个a[i],都与a[p]进行比较,空白处需要填入语句的部分是if语句满足条件后要进行的操作,表示如果a[i]<a[p],应当进行怎样的处理。选项A 是令i=p,此时整个程序中p的值没有发生改变,p=0,即如果a[i] <a[p],则令i=0,回到了初始化的状态,这样在for语句中造成了死循环,该选项错误。选项B是令a[p]=a[i],整个程序在运行过程中,p的值依然没有变化,p=0,即如果a[i] <a[0],则令a[0]=a[i],整个程序运行结束后,a[0]的数值应该为整个数组的最小值,用return语句返回下标0没有意义。选项C是令 p=j,程序在运行过程中,j的值和p的值都没有发生改变,整个程序没有意义。选项D是p=i,该语句的含义是如果a[i]<a[p],则令p=i,程序结束后则有a[p]为数组中的最小值,将最小值的下标返回。

  • 第16题:

    以下程序输出正确的是_______ amovep(int *p,int (*a)[3],int n) { int i,j; for(i=0;i<n;i++) for(j=0;j<n;j++){ *p=a[i][j];p++;} } main() {int *p,a[3][3]={{1,3,5}, {2,4,6}}; p=(int*)mallox(100) amovep)p,a,3); printf("%d%d\n",p[2],p[5]);free(p) }

    A.56

    B.25

    C.34

    D.程序错误


    正确答案:A
    解析:本题main函数中定义了指针p和二维数组a,通过函数amovep将数组的值存入指针p所指向的存储单元中,a的各元素分别:a[0][0]=1,a[0][1]=3,a[0][1]=3,a[0][2]=5,a[1][2]=2,a[1][1]=4,a[1][2]=6,a[2][0]=0,a[2][1]=0,a[2][2]=0。通过malloc()函数给指针分配内存空间,free()函数用于释放指针变量所用内存空间。在主函数中通过amovep(p,a,3)调用函数amovep,使得实参p与形参P,实参数组a与形参中指向数组的指针变量共用同一存储空间。最后输出p[2],p[5]为56。

  • 第17题:

    下列有关指针的用法中错误的是( )。

    A.int i;int*ptr=&i;

    B.int i;int*ptr;i=*ptr;

    C.int*ptr;ptr=0;

    D.int i=5;int*ptr;*ptr&i;


    正确答案:B

  • 第18题:

    已知:intn=10;那么下列语句中错误的是

    A.int*p=new long[n];

    B.int p[n];

    C.int*p=new long(n);

    D.int p[10];


    正确答案:B
    解析:本题考核指针、数组和new运算符。运算符new用于动态申请存储空间,它的操作数为某种数据类型且可以带有初值表达式或元素个数,若带初值,则其表达式为:指针>=new类型>(初值);如C选项所示,若带有元素个数,则其语法格式为:《指针》=new类型>[元素个数>],如A选项所示。数组定义中数组大小必须为常量,而B选项中的n为一变量所以是错误的。

  • 第19题:

    下列有关指针的用法中,错误的是( )。

    A.int i;int *p=&i;

    B. int i;int *p;i=*p;

    C. int *p;p=0;

    D.int i=5;int *p;p=&i;


    正确答案:B
    解析:“int i;”语句为定义了一个整型变量i。“int *p”为定义一个整型指针p。选项A) 中的“int *p=&i;”是定义整型指针变量p,并指向整型i的地址。选项B) 中“i=*p”语句是将p指向的变量赋值给i,而指针p没有初始化,所以选项B) 错误。选项C) 中“p=0;”表示p指向0的地址。选项D) 中“&i”为取i的地址,并赋值给p。

  • 第20题:

    下列语句中正确的是()。A.int * p;i=8; p=&i;B.int * p,i; p=&i;C.float * p;int i;p=&am

    下列语句中正确的是( )。

    A.int * p;i=8; p=&i;

    B.int * p,i; p=&i;

    C.float * p;int i;p=&(float)i;

    D.float * p;cout<<* p;


    正确答案:B
    解析:选项A中的变量i没有定义就使用了;选项C(float)i把i中的数据取出后变为float型,就是一个数值,“&(float)i”不能得到i的地址;选项D中的指针变量,p没有赋值就使用,它到底指向哪个存储单元没有指明,它可能指向不可读取的存储单元,这时的破坏性很大。

  • 第21题:

    有定义语句:“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*型指针。

  • 第22题:

    下列整数的定义中,错误的是( )。 A.int f=314.;B.int a=012;C.int i=189;S

    下列整数的定义中,错误的是( )。

    A.int f=314.;

    B.int a=012;

    C.int i=189;

    D.int d=0x123;


    正确答案:A
    A。【解析】整数的定义不能带小数点,表明是一个浮点数;其他三个都正确。

  • 第23题:

    下列不正确的定义是()。

    • A、int*p=&i,i;
    • B、int*p,i;
    • C、inti,*p=&i;
    • D、inti,*p;

    正确答案:A