C++指针选择题带答案

1、有如下语句int a=10,b=20,*p1,*p2;p1=&a;p2=&b;如图1所示,若要实现图2所示的存储

结构,可选用的赋值语句是___________。

A)*p1=*p2;            B)p1=p2;         C)p1=*p2;            D)*p1=p2;

2、变量的指针,其含义是该变量的______________。

        A)值                        B)地址            C)名                        D)一个标志

3、若有说明:int *p,m=5,n;以下正确的程序段是________。

        A)p=&n; cin>>&p;  B)p=&n;cin>>*p; C) cin>>&n; *p=n;  D)p=&n; *p=&m;                          

4、以下程序有错,错误原因是___________。

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

5、已有变量定义和函数调用语句:int a=25;print_value(&a);下面函数的正确输出结果是_____

    void print_value(int *x)  {cout<<++*x;   }

        A)23                        B)24                C)25                D)26

6、下面判断正确的是____________。

A)char *a=”china”;等价于char  *a; *a=”china”;

B)char  str[10]={“china”};等价于char  str[10];str[]={“china”};

C)char *s=”china”;等价于char *s;  s=”china”;

D)char c[4]=”abc”,d[4]=”abc”;等价于char c[4]=d[4]=”abc”;

7、下面程序段中,for循环的执行次数是___________。

char  *s=”\ta\018bc”;

for(  ;*s!=’\0’; s++)      cout<<“*”;

        A)2                          B)5                  C)6                  D)7

8、下面能正确进行字符串赋值操作的是_________。

 A)char  s[5]={“ABCDE”};           B)char  s[5]={‘A’,’B’,’C’,’D’,’E’};

C)char  *s;s=”ABCDE”;              D)char  *s; cin>>s;

9、下面程序段的运行结果是__________。

   char  *s=”abcde”;

   s+=2;   cout<<s;

        A)cde                      B)字符’c’                C)字符’c’的地址                D)无确定的输出结果

10、若有说明语句

char a[]=”It is mine”;      char *p=”It is mine”;

则以下不正确的叙述是___________。

A)a+1表示的是字符t的地址

B)p指向另外的字符串时,字符串的长度不受限制

C)p变量中存放的地址值可以改变

D)a中只能存放10个字符

11、下面程序段的运行结果是_____________。

        char  s[6];     s=”abcd”;    cout<<s;

        A)”abcd”                 B)”abcd  “             C)\”abcd\”       D)编译出错

12、下面程序的运行结果是______________。

#include<iostream>

using namespace std;

main()

{ static char a[]=”Language”,b[]=”programe”;

  char *p1,*p2;    int k;

  p1=a;    p2=b;

  for(k=0;k<=7;k++)

    if(*(p1+k)==*(p2+k))       cout<<*(p1+k); }

A)gae                      B)ga                        C)Language                    D)有语法错

13、下面程序的运行结果是___________。

#include <string.h>

#include <iostream>

using namespace std;

main()

{char p1[30]="abc",*p2,str[50]=”abc”;

p1=”abc”;              p2=”abc”;

strcpy(str+1,strcat(p1,p2));

cout<<str;

}

        A)abcabcabc            B)bcabcabc             C)aabcabc               D)cabcabc

14、若有定义:int a[2][3];则对a数组的第i行第j列(假设i,j已正确说明并赋值)元素

值的正确引用为_____________。

A)*(*(a+i)+j)          B)(a+i)[j]                 C)*(a+i+j)               D)*(a+i)+j

15、若有以下定义和语句,则对a数组元素地址的正确引用为________________。

        int a[2][3], (*p)[3];

        p=a;

        A)*(p+2)                 B)p[2]                     C)p[1]+1                 D)(p+1)+2

16、若有定义:int (*p)[4];则标识符p____________。

A)是一个指向整型变量的指针

B)是一个指针数组名

C)是一个指针,它指向一个含有四个整型元素的一维数组

D)定义不合法

17、若有以下定义和赋值语句,则对b数组的第i行第j列(假设i,j已正确说明并赋值)

元素的非法引用为______________。

        int b[2][3]={0}, (*p)[3];

        p=b;

        A)*(*(p+i)+j)          B)*(p[i]+j)              C)*(p+i)+j               D)(*(p+i))[j]

18、若有定义:int *p[4];则标识符p___________。

A)是一个指向整型变量的指针

B)是一个指针数组名

C)是一个指针,它指向一个含有四个整型元素的一维数组

D)定义不合法

19、以下正确的定义语句和赋值语句是_________。

A)int b[3][5],(*p)[3],(*q)[5];p=b;q=b;

B)float b[3][5],*p[3];p[0]=b[0];p[2]=*b+4;

C)double b[3][5],s[5][3],*q;q=b;s=q;

D)int b[10],*q;char *s;q=b;s=b;

20、若有以下定义,则数值不为3的表达式是__________。

int x[10]={0,1,2,3,4,5,6,7,8,9},*p1;

A)x[3]                                             B)p1=x+3,*p1++

C)p1=x+2,*(p1++)                         D)p1=x+2,*++p1

答案:

bbbadcccad

dacacccbbc

  • 23
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值