第10章 指针.docx

上传人:b****5 文档编号:6810008 上传时间:2023-01-10 格式:DOCX 页数:34 大小:28.93KB
下载 相关 举报
第10章 指针.docx_第1页
第1页 / 共34页
第10章 指针.docx_第2页
第2页 / 共34页
第10章 指针.docx_第3页
第3页 / 共34页
第10章 指针.docx_第4页
第4页 / 共34页
第10章 指针.docx_第5页
第5页 / 共34页
点击查看更多>>
下载资源
资源描述

第10章 指针.docx

《第10章 指针.docx》由会员分享,可在线阅读,更多相关《第10章 指针.docx(34页珍藏版)》请在冰豆网上搜索。

第10章 指针.docx

第10章指针

第十章 指针

一、单项选择题

1.下列选项中正确的语句组是()

A.chars[8];s={"Beijing"};B.char*s;s={"Beijing"};

C.chars[8];s="Beijing";D.char*s;s="Beijing";

(知识点:

指针与数组;难度系数:

1;答案:

D)

2.已定义以下函数

intfun(int*p)

{

return*p;

}

该函数的返回值是()

A.不确定的值B.形参p中存放的值

C.形参p所指存储单元中的值D.形参p的地址值

(知识点:

函数与指针;难度系数:

1;答案:

C)

3.若有定义:

int*p[3];,则以下叙述中正确的是()

A.定义了一个基类型为int的指针变量p,该变量具有三个指针

B.定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针

C.定义了一个名为*p的整型数组,该数组含有三个int类型元素

D.定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素

(知识点:

指针数组;难度系数:

1;答案:

B)

4.有以下程序

intmain()

{

chara,b,c,*d;

a='\';

b='\xbc';

c='\0xab';

d="\0127";

printf("%c%c%c%c\n",a,b,c,*d);

}

编译时出现错误,以下叙述中正确的是()

A.程序中只有a='\';语句不正确

B.b='\xbc';语句不正确

C.d="\0127";语句不正确

D.a='\';和c='\0xab';语句都不正确

(知识点:

变量与指针;难度系数:

2;答案:

D)

5.若有如下定义chara[10],*p=a,则对a数组元素的正确引用是()。

A.*&a[5]B.a+2C.*(p+5)D.*(a+2)

(知识点:

数组与指针;难度系数:

1;答案:

D)

6.若有说明:

inti,j=2,*p=&i;,则能完成i=j赋值功能的语句是()

A.i=*p;B.*p=*&j;C.i=&j;D.i=**p;

(知识点:

变量与指针;难度系数:

1;答案:

B)

7.以下定义语句中,错误的是()

A.inta[]={1,2};B.char*a[3];

C.chars[10]="test";D.intn=5,a[n];

(知识点:

指针与数组;难度系数:

2;答案:

D)

8.以下不能正确进行字符串赋初值的语句是()

A.charstr[5]="good!

";B.charstr[]="good!

";

C.char*str="good!

";D.charstr[5]={'g','o','o','d'};

(知识点:

数组与指针;难度系数:

1;答案:

A)改为charstr[6]="good!

";

9.若有以下定义和语句:

ints[4][5],(*ps)[5];

ps=s;

则对s数组元素的正确引用形式是()

A.ps+1B.*(ps+3)C.ps[0][2]D.*(ps+1)+3

(知识点:

数组与指针;难度系数:

3;答案:

C)

10.若有说明:

intn=2,*p=&n,*q=p;,则以下非法的赋值语句是()。

A)p=q;B)*p=*q;C)n=*q;D)p=n;

(知识点:

指针的定义;难度系数:

1;答案:

D)

11.设有说明int(*p)[M];其中的标识符p是()

A.M个指向整型变量的指针

B.指向M个整型变量的函数指针

C.一个指向具有M个整型元素的一维数组的指针

D.具有M个指针元素的一维指针数组,每个元素只能指向整型量

(知识点:

指向数组的指针;难度系数:

2;答案:

C)

12.指针s所指字符串的长度为()。

char*s=″\t\″Name\\Address\n″;

A.19B.15C.18D.说明不合法

(知识点:

字符串;难度系数:

3;答案:

B)

13.与定义int*p[4]等价的是()。

A.intp[4]

B.int*(p[4])

C.int*p

D.int(*p)[4]

(知识点:

指针数组;难度系数:

2;答案:

B)

14.设有定义”inta=3,b,*p=&a;”,则下列语句中使b不为3的语句是()。

A.b=*&a;B.b=*a;C.b=a;D.b=*p;

(知识点:

指针的定义;难度系数:

1;答案:

B)

15.已知:

int*p();p是()。

A.指向int型的指针变量

B.int型的指针数组

C.一个指向函数的指针变量,函数的返回值是int型

D.一个函数,该函数的返回值是指向int型的指针变量

(知识点:

指针与函数;难度系数:

1;答案:

D)

16.设有说明int(*p)[M];其中的标识符p是()

A.M个指向整型变量的指针

B.指向M个整型变量的函数指针

C.一个指向具有M个整型元素的一维数组的指针

D.具有M个指针元素的一维指针数组,每个元素只能指向整型量

(知识点:

指向数组的指针;难度系数:

2;答案:

C)

17.以下选项中,不能正确赋值的是()

A.chars1[10];s1="Ctest";

B.chars2[]={'C','t','e','s','t'};

C.chars3[20]="Ctest";

D.char*s4="Ctest\n"

(知识点:

指针与数组;难度系数:

2;答案:

A)

18.若有以下定义:

chars[20]="programming",*ps=s;

则不能代表字符o的表达式是()

A.ps+2

B.s[2]

C.ps[2]

D.ps+=2,*ps

(知识点:

指针与数组;难度系数:

1;答案:

A)

19.下面程序的输出是()

intmain()

{

char*s="121";

intk=0,a=0,b=0;

do

{

k++;

if(k%2==0)

{

a=a+s[k]-'0';

continue;

}

b=b+s[k]-'0';

a=a+s[k]-'0';

}while(s[k+1]);

printf("k=%da=%db=%d\n",k,a,b);

}

A.k=3a=2b=3

B.k=3a=3b=2

C.k=2a=3b=2

D.k=2a=2b=3

(知识点:

指针定义;难度系数:

3;答案:

C)

20.若有以下的定义:

inta[]={1,2,3,4,5,6,7,88,9,10),*p=a;

则值为3的表式是()

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

B.p+=2,*++p

C.p+=3,*kp++

D.p+=2,++*p

(知识点:

指针与数组;难度系数:

1;答案:

C)

21.若有以下定义和语句:

intw[2][3],(*pw)[3];pw=w;

则对w数组元素非法引用是()

A.*(w[0]+2)

B.*(pw+1)[2]

C.pw[0][0]

D.*(pw[1]+2)

(知识点:

指针与数组;难度系数:

3;答案:

B)

22.设有如下定义:

intarr[]={6,7,8,9,10};

int*ptr;

则下列程序段的输出结果为()

ptr=arr;

*(ptr+2)+=2;

printf("%d,%d\n",*ptr,*(ptr+2));

A.8,10B.6,8C.7,9D.6,10

(知识点:

指针与数组;难度系数:

3;答案:

D)

23.执行以下程序段后,m的值为()

inta[2][3]={{1,2,3},{4,5,6}};

intm,*p;

p=&a[0][0];

m=(*p)*(*(p+2))*(*(p+4));

A.15B.14C.13D.12

(知识点:

指针与数组;难度系数:

2;答案:

A)

24.有以下程序段

union

{

intk;

chari[2];

}*s,a;

intmain()

{

s=&a;

s->i[0]=0x39;

s->i[1]=0x38;

printf("%x\n",s->k);

}

输出结果是()

A.3839B.3938C.380039D.390038

(知识点:

变量与指针;难度系数:

2;答案:

D)

25.设有如下定义:

int(*ptr)();

则以下叙述中正确的是()

A.ptr是指向一维组数的指针变量

B.ptr是指向int型数据的指针变量

C.ptr是指向函数的指针,该函数返回一个int型数据

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针

(知识点:

函数指针;难度系数:

1;答案:

C)

26.有以下程序

intmain()

{

chara[]="programming",b[]="language";

char*p1,*p2;

inti;

p1=a;p2=b;

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

if(*(p1+i)==*(p2+i))

printf("%c",*(p1+i));

}

输出结果是()

A.gmB.rgC.orD.ga

(知识点:

指针与数组;难度系数:

3;答案:

D)

27.若有说明:

long*p,a;则不能通过scanf语句正确给输入项读入数据的程序段是()

A.*p=&a;scanf("%ld",p);

B.p=(long*)malloc(8);scanf("%ld",p);

C.scanf("%ld",p=&a);

D.scanf("%ld",&a);

(知识点:

变量与指针;难度系数:

2;答案:

A)

28.设已有定义:

char*st="howareyou";下列程序段中正确的是()

A.chara[11],*p;strcpy(p=a+1,&st[4]);

B.chara[11];strcpy(++a,st);

C.chara[11];strcpy(a,st);

D.chara[],*p;strcpy(p=&a[1],st+2);

(知识点:

指针与数组;难度系数:

1;答案:

B)

29.已知:

chars[4]=”cba”;char*p;执行下面语句

p=s;printf(“%c\n”,*p+1);其输出为()。

A.字符’c’B.字符’b’C.字符’a’D.字符’d’

(知识点:

指针与数组;难度系数:

2;答案:

D)

30.已知:

inta[3][4],(*p)[4]=a;p+=6;那么与*p的值相同的是()

A.*(a+6)B.*(&a[0]+6)C.*(a[1]+2)D.*(&a[0][0]+6)

(知识点:

指针与数组;难度系数:

2;答案:

A)

31.如下函数

fun(int*p1,*p2)

{

int*p;

*p=*p1;

*p1=*p2;

*p2=*p;

}

该程序功能为:

()。

A.正确,但无法改变*p1和*p2的值

B.能够成功交换*p1和*p2的值

C.能够成功交换*p1和*p2的地址

D.因为使用了空指针,可能造成系统故障

(知识点:

指针作为函数参数;难度系数:

1;答案:

D)

二、多项选择题

1.若有以下说明和语句,且0≤i<10,

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

int*p,i;

p=a;

则对数组元素的正确引用是()。

A.*(a+i)B.a[p-a]C.p+iD.*(&a[i])

(知识点:

数组与指针;难度系数:

1;答案:

ABD)

2.若有定义:

char*p1,*p2,*p3,*p4,ch;则能正确赋值的程序语句为()

A.p1=&ch;scanf(″%c″,p1);

B.p2=(char*)malloc

(1);scanf(″%c″,p2);

C.p3=getchar();

D.p4=&ch;*p4=getchar();

(知识点:

指针的定义;难度系数:

1;答案:

ABD)

3.strcpy库函数用于复制一个字符串。

若有以下定义:

char*str1=”copy”,str2[10],*str3=”hijklmn”,*str4,*str5=”abcd”;

则对strcpy库函数的正确调用是()

(A)strcpy(str2,str1)(B)strcpy(str3,str1)(C)strcpy(str4,str1)

(D)strcpy(str5,str1)(E)strcpy(str1,str5)

(知识点:

字符串处理函数;难度系数:

1;答案:

ABDE)

4.设有以下语句,则()是对a数组元素的正确引用。

Chara[]=”qwertyu”,*p=a;

A.a[p-a]B.*(&a[5])C.*(*(a+5))D.(p+1)[3]

(知识点:

指针与数组;难度系数:

1;答案:

ABD)

5.若有定义:

inta[3][4],*p=&a[0][0];则对a数组元素的正确引用的有()

A.*(p+i)B.*(*a+2)C.**a+2D.*(a+2)

(知识点:

指针与数组;难度系数:

2;答案:

AB)

6.对于C语言字符数组,以下说法正确的是()。

A.可以在赋值语句中通过赋值运算符“=”对字符数组整体赋值

B.可以用关系运算符对字符数组中的字符串进行比较

C.字符数组可以存放字符串

D.字符数组中的字符串不可以整体输入、输出

(知识点:

字符数组;难度系数:

1;答案:

ACD)

7.不合法的数组定义是()。

A.ints[]="japanes"

B.ints[2]={0,2,4};

C.chars="string"

D.chars[]={"0,1,2,3,4,5"};

(知识点:

字符数组;难度系数:

1;答案:

ABC)

8.若有语句:

charsl[]="string1",s2[8],*s3,*s4="string2";则()

是对库函数strcpy的正确调用。

A.strcpy(sl,"string2");

B.strcpy(s4,"string1");

C.strcpy(s3,"string1")

D.strcpy("string2",s2);

(知识点:

字符串处理函数;难度系数:

1;答案:

ABC)

9.对两个数组s1和s2进行如下初始化

chars1[]="chinese";

chars2[]={'c','h','i','n','e','s','e'};

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

A.s1与s2数组完全相同

B.s1与s2长度相同

C.s1和s2中都存放字符串

D.s1数组比s2数组占用内存大

(知识点:

字符数组;难度系数:

1;答案:

ABC)

10.下列语句段,错误的是()。

A.staticstr[]={"ilikethis"};

B.char*p="ilikethis"

C.char*p;strcpy(p,"ilikethis");

D.charstr[13];str[]="ilikethis";

(知识点:

字符数组与字符指针;难度系数:

1;答案:

ACD)

11.下列语句正确的是()。

A.int*str[10];B.char**p;

C.char*s(),*p;D.int*p,a;x=10;*p=&a;

(知识点:

指针的定义;难度系数:

1;答案:

ABC)

12.若已定义a为int型变量,则()是对指针变量p的错误说明和初始化。

A.int*p=aB.int*p=*a;

C.intp=&aD.int*p=&a;

(知识点:

指针的定义;难度系数:

1;答案:

ABC)

13.设有如下定义:

char*s[2]={"love","niha"};

则以下说法错误的是()。

A.s数组元素的值分别是"love"和"niha"

B.s数组的两个元素中各自存放了字符'l'和'n'的地址

C.s数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址

D.s是指针变量,它指向含有两个数组元素的字符型一维数组

(知识点:

指针数组;难度系数:

2;答案:

ABC)

14.若有说明语句:

inti,x[3][4];则以下关于x,*x、x[0]、&x[0][0]的错误描述是()。

A.x、*x、x[0]、&x[0][0]均表示元素x[0][0]的地址

B.只有x、x[0]和&x[0][0]表示的是元素x[0][0]的地址

C.只有x[0]和&x[0][0]表示的是元素x[0][0]的地址

D.只有&x[0][0]表示的是元素x[0][0]的地址

(知识点:

指针与数组;难度系数:

1;答案:

BCD)

15.以下说法中正确的是()。

A.指针可以进行加、减等算术运算

B.指针中存放的是地址值

C.指针是一个变量

D.指针变量不占用存储空间

(知识点:

指针运算;难度系数:

1;答案:

ABC)

16.设有charstr1[20],str2[20],b,则下列语句不正确的是()。

A.str1={"mylove"};str2=str1;

B.b="mn";

C.str1={"mylove"};str2={"dog"};strcpy(str1,str2);

D.b='a';

(知识点:

指针与数组;难度系数:

1;答案:

ABC)

17.若有说明语句:

inti,x[3][4];则能将x[1][1]的值赋给变量i的语句是()。

A.i=*(*(x+1)+1)B.i=x[1][1]

C.i=*(*(x+1))D.i=*(x[1]+1)

(知识点:

指针与数组;难度系数:

2;答案:

ABD)

18.变量a的值为12,a的地址为2000,若欲使p为指向a的指针变量,则下列赋值不正确的是()。

A.&a=3B.*p=12

C.*p=2000D.p=&a

(知识点:

指针的定义;难度系数:

1;答案:

ABC)

19.对函数调用strcat(strcpy(s1,s2),s3)功能描述错误的是()。

A.将串s1复制到串s2中后再连接到串s3之后

B.将串s1连接到串s2中后再复制到串s3之后

C.将串s2复制到串s1中后再将串s3连接到s1之后

D.将串sr2复制到串s1中后再将串s1复制到s3中

(知识点:

字符串处理函数;难度系数:

2;答案:

ABD)

20.下列说法正确的是()。

A.字符数组由若干元素组成,每个元素中放一个字符

B.对数组赋初值要用static存储类别

C.字符指针变量中存放的是地址

D.对字符指针变量赋初值要用static存储类别

(知识点:

字符数组与字符指针;难度系数:

1;答案:

ABC)

21.若有以下语句,且0<=k<6,则()是对数组元素地址的不正确表示。

staticintx[]={1,3,5,7,9,11}.*ptr,k;

ptr=x;

A.x++B.&ptr

C.&ptr[k]D.&(x+1)

(知识点:

指针运算;难度系数:

1;答案:

ABD)

22.若有以下定义:

chars[20]="tropetry",*p=s;

则能代表字符o的表达式是()。

A.p+2B.s[2]

C.p[2]D.p+=2,*p

(知识点:

指针与数组;难度系数:

1;答案:

BCD)

 

23.若有以下定义和语句:

charstr[]="string",str2[8],*str3,*str4="string";

库函数strcpy用以复制字符串。

则以下对库函数strcpy的正确调用是()。

A.strcpy(str1,"girl1");

B.strcpy(str2,"girl2");

C.strcpy(str3,"girl3");

D.strcpy(str4,"girl4");

(知识点:

字符串处理函数;难度系数:

1;答案:

ABD)

24.若有语句int(*ptr)();则关于ptr错误的是()。

A.ptr是指向一维数组的指针变量。

B.ptr是指向int型数据的指针变量。

C.ptr是指向函数的指针,该函数返回一个int型数据。

D.ptr是一个函数名,该函数的返回值是指向int型数据的指针。

(知识点:

函数指针;难度系数:

1;答案:

ABD)

25.若有说明语句:

inta[]={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

(知识点:

指针运算;难度系数:

1;答案:

BCD)

26.若有说明:

intx,*pb;

那么程序中对pb错误赋值的表达式应该是()。

A.*pb=&xB.pb=xC.pb=&xD.*pb=*x

(知识点:

指针的定义;难度系数:

1;答案:

ABD)

27.若有说明:

intj,k=7,*p=&j;

则与j=k;不等价的语句是()。

A.j=*p;B.*p=*&k;C.j=&k;D.j=**p;

(知识点:

指针的定义;难度系数:

1;答案:

ACD)

28.main(argc,argv)中形式参数argv的错误说明形式为()。

A.char*argv[]

B.charargv[][]

C.charargv[]

D.char*argv

(知识点:

带参数的主函数;难度系数:

1;答案:

BCD)

29.已知函数说明语句“void*f();”,则它的含义错误是()。

A.函数f的返回值是一个通用型指针

B.函数f的返回值可以是任意的数据类型

C.函数f无返回值

D.指针f指向一个函数,该函数无返回值

(知识点:

返回指针的函数;难度系数:

1;答案:

BCD)

30.若用数组名作为函数调用的实参,传递给形参的错误描述是()。

A.数组的首地址

B

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1