指针150概要.docx

上传人:b****3 文档编号:4870254 上传时间:2022-12-11 格式:DOCX 页数:31 大小:27.32KB
下载 相关 举报
指针150概要.docx_第1页
第1页 / 共31页
指针150概要.docx_第2页
第2页 / 共31页
指针150概要.docx_第3页
第3页 / 共31页
指针150概要.docx_第4页
第4页 / 共31页
指针150概要.docx_第5页
第5页 / 共31页
点击查看更多>>
下载资源
资源描述

指针150概要.docx

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

指针150概要.docx

指针150概要

指针

1若有定义:

intx,*pb;则以下正确的赋值表达式是()

A *pb=&x;

B pb=x;

C pb=&x;

D *pb=*x;

参考答案

C

2执行以下程序后,a的值为

main()

{inta,b,k=4,m=6,*p1=&k,*p2=&m;

a=p1==&m;

b=(-*p1)/(*p2)+7;

printf(“a=%d\n”,a);

printf(“b=%d”,b);

}

A -1

B 1

C 0

D 4

参考答案

C

3下面程序中调用scanf函数给变量a输入数值的方法是错误的,其错误原因是()

main()

{int*p,q,a,b;

p=&a;

scanf(“%d”,*p);

……

}

A *p表示的是指针变量p的地址;

B *p表示的是变量a的值,而不是变量a的地址

C *p表示的是指针变量p的值

D *p只能用来说明p是一个指针变量

参考答案

B

4若有intk=2,*ptr1,*ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的语句是()

A k=*ptr1+*ptr2;

B ptr2=k;

C ptr1=ptr2;

D k=*ptr1*(*ptr2);

参考答案

B

5变量的指针,其含义是指该变量的

A 值

B 地址

C 名

D 一个地址

参考答案

B

6若有语句int*pointa=4;和point&a;下面均代表地址的一组选项是()

A a,point,*&a

B &*a,&a,*point

C *&point,*point,&a

D &a,&*point,point

参考答案

D

7若有说明:

int*p,m=5,n;下面正确的程序段是

A p=&n;scanf(“%d”,&p);

B p=&n;scanf(“%d”,*p);

C scanf(“%d”,&n);*p=n;

D p=&n;*p=m;

参考答案

D

8设char*s=”\ta\017bc”;则指针变量s指向字符串所占的字节数是

A 9

B 5

C 6

D 7

参考答案

C

9下面程序段中,for循环的执行次数是()

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

for(;s!

=’\0’;s++)printf(“*”);

A 9

B 5

C 6

D 7

参考答案

C

10下面能正确进行字符串赋值操作的是

A chars[5]={“ABCDE”};

B chars[5]={‘A’,’B’,’C’,’D’,’E’};

C char*ss="ABCDE";

D char*s;scanf(“%s”,s);

参考答案

C

11下面程序段的运行结果是()

char*s=”abcde”;

s+=2;printf(“%d”,s);

A cde

B 字符’c’

C 字符的’c’地址

D 无确定的输出结果

参考答案

C

12设p1和p2是指向同一个字符串的指针变量,c为字符变量,则以下不正确执行的赋值语句是()

A c=*p1+*p2;

B p2=c;

C p1=p2;

D c=*p1*(*p2);

参考答案

B

13设有下面的程序段:

chars[]=”china”;char*p;p=s;

则下列叙述正确的是()

A s和p完全相同

B 数组s中的内容和指针变量p中的内容相等

C *P与s[0]相等

D s数组长度和p所指向的字符串长度相等

参考答案

C

14下面程序段的运行结果是()

char*format=”%s,a=%d,b=%d\n”;

inta=1,b=10;

a+=b;

printf(format,”a+=b”,a,b);

A for,”a+=b”,ab

B format,”a+=b”

C a+=b,a=11,b=10

D 以上结果都不对

参考答案

C

15若有语句:

chars1[]=”string”,s2[8],*s3,*s4=”string2”;则对库函数strcpy()的正确调用是

A strcpy(s1,”string2”);

B strcpy(s4,”string1”);

C strcpy(s3,”string1”);

D strcpy(s2,s4);

参考答案

D

16下面说明不正确的是

A chara[10]=”china”;

B chara[10],*p=a;p=”china”;

C char*a;a=”china”;

D chara[10],*p;p=a=”china”;

参考答案

D

17若有说明语句chara[]=”Itismine”;char*p=”Itismine”;

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

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

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

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

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

参考答案

D

18若有定义chars[10];则在下面表达式中不表示s[1]的地址是

A s+1

B s++

C &s[0]+1

D &s[1]

参考答案

B

19下面程序段的运行结果是()

chars[6];s=”abcd”;printf(“\”%s\”\n”,s);

A ”abcd”

B ”abcd“

C \”abcd\”

D 编译出错

参考答案

D

20若有下面定义,则对a数组元素的正确引用是()

inta[5],*p=a;

A *&a[5]

B a+2

C *(p+5)

D *(a+2)

参考答案

D

21若有下面定义,则对a数组地址的正确引用是()

inta[5],*p=a;

A &a[0]

B &a+1

C p+5

D *a+1

参考答案

A

22若有下面定义,则p+5表示()

inta[10],*p=a;

A 元素a[5]的地址

B 元素a[5]的值

C 元素a[6]的值

D 元素a[6]的地址

参考答案

A

23若有下面定义:

char*cc[2]={“1234”,”5678”};

则正确的描述是

A cc数组的两个元素中各自存放了字符串“1234“和”5678“的首地址;

B cc数组的两个元素分别存放的是含有4个字符的一维字符数组的首地址;

C cc是指针变量,它指向含有两个数组元素的字符型一维数组;

D cc数组元素的值分别是“1234“和”5678“;

参考答案

B

24以下程序段给数组所有元素输入数据,空处应填入()

main()

{inta[10],i=0;

while(i<10)scanf(“%d”,_______________);}

A a+i

B &a[++i]

C a+(i++)

D &a[i]

参考答案

C

25下面程序是把数组元素中的最小值放入a[0]中,则在if语句中应填入()

main()

{staticinta[10]={3,5,3,4,5,6,65,345,2,45},*p=a,i;

for(i=0;i<10;i++,p++)

if(___________)*a=*p;

}

A p

B *p

C *p<*a[0]

D *p[0]<*a[0]

参考答案

B

26若有定义语句int(*p)[M];其中的标识符p是

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

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

C 一个具有M个整型元素的一维数组的指针变量;

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

参考答案

C

27下面叙述中不正确的是

A 预处理命令行都必须以#号开始;

B 在程序中凡是以#号开始的语句都是预处理命令行;

C C程序在执行过程中对预处理命令行进行处理;

D 以下是正确的宏定义#defineIBM_PC

参考答案

C

28下面叙述中正确的是

A 在程序的一行上可以出现多个有效的预处理命令行;

B 使用带参的宏时,参数的类型应与宏定义时的一致;

C 宏替换不占用运行时间,只占编译时间;

D 在以下定义中CR是称为“宏名”的标识符;

参考答案

C

29设有inta[]={10,11,12},*p=&a[0];则执行完*p++;*p+=1;后a[0],a[1],a[2]的值依次是

A 10,11,12

B 11,12,12

C 10,12,12

D 11,11,12

参考答案

C

30若有以下说明和语句,inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;p=a;

且0<=i<10,则下面哪个是对数组元素地址的正确表示。

A &(a+1)

B a++

C &p

D &p[i]

参考答案

D

31若有以下说明和语句,inta[10],*p1,*p2;p1=a;p2=&a[5];则p1-p2的值为。

A 4

B 5

C 6

D 没有指针与指针的减法

参考答案

B

32已知有以下的说明:

inta[]={8,1,2,5,9,4,7,6,0,3};则a[*(a+a[3])]的值为

A 9

B 5

C 0

D 1

参考答案

A

33设有说明intk[2]={2,3},*p=&k[0];则下列错误的C语句是

A k+=1;

B p+=1;

C *p++;

D (*P)++;

参考答案

A

34若有以下说明和语句,inta[]={1,2,3,4,5,6,7,8,9,0},*p,i;p=a;

且0<=i<10,则下面哪个是对数组元素的错误引用

A *(a+i)

B a[p-a]

C p+i

D *(&a[i])

参考答案

C

35已知有以下的说明,floata[3]={1.2,45.6,-23.0};float*p=a;那么执行语句a=p+a;后,a[0]的值等于

A 1.2

B 45.6

C –23.0

D 语句有错

参考答案

D

36设有说明ints[2]={0,1},*p=s;则下列错误的C语句是

A s+=1;

B p+=1;

C *p++;

D (*P)++;

参考答案

A

37设有说明inta[]={3,2,0,1,4,5,9,8,6};则a[*(a+a[4])]的值为

A 4

B 3

C 2

D 1

参考答案

A

38若有下面程序段,则正确的输出是______。

char*p=”break”,a[10]={‘a’,’b’,’c’,’d’};

printf(“%c,%c,%c,%c”,*(p+1),p[2],*(a+2),a[1]);

A e,k,b,c

B r,a,a,b

C r,e,c,b

D 有语法错,无正确输出

参考答案

C

39若有以下说明:

intm[]={1,2,3,4,5,6,7,8},*p=m;则数值为7的表达式是

A *p+7

B p+6

C *p+=6

D *(p+7)

参考答案

C

40若有以下说明,且0<=i<5,则____是对数组元素的错误引用。

inta[]={10,20,30,40,50};

int*p=a,i;

A *(&a[i])

B a[p+i]

C *(p+i)

D *(a+i)

参考答案

B

41假定P1和P2是已赋值的字符指针,则下述有关运算中,____是非法的。

A *P1=*P1+*P2

B *P1+=100-*P2

C P2=P1/2

D *P2=*P1-‘A’

参考答案

C

42若有以下说明:

intm[5]={2,4,6,8,10},*p=m;则数值为8的表达式是

A *p+8

B p+8

C *p+=6

D *(p+6)

参考答案

C

43若有以下说明:

inta[]={10,20,30,40,50};int*p=a,i;且0<=i<5,则____是对数组元素地址的正确表示。

A a++

B &p

C p++

D p[i]

参考答案

C

44若有以下说明:

floatx,y=8.0,*pf=&x;则与x=y;等价的语句是

A x=*pf;

B *pf=*&y;

C x=&y;

D x=**pf;

参考答案

B

45对于基类型相同的两个指针变量之间,不能进行的运算是

A <

B =

C +

D -

参考答案

C

46有如下说明

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

则数值为9的表达式是

A *P+9

B *(P+8)

C *P+=9

D P+8

参考答案

B

47下列程序段的输出结果是

voidfun(int*x,int*y)

{

printf("%d%d",*x,*y);

*x=3;

*y=4;

}

main()

{

intx=1,y=2;

fun(&y,&x);

printf("%d%d",x,y);

}

A 2143

B 1212

C 1234

D 2112

参考答案

A

48下列程序的输出结果是

main()

{chara[10]={9,8,7,6,5,4,3,2,1,0},*p=a+5;

printf("%d",*--p);

}

A 非法

B a[4]的地址

C 5

D 3

参考答案

C

49若定义了以下函数:

voidf(……)

{……

*p=(double*)malloc(10*sizeof(double));

……

}

p是该函数的形参,要求通过p把动态分配存储单元的地址传回主调函数,则形参p的正确定义应当是

A double*p

B float**p

C double**p

D float*p

参考答案

C

50以下只有在使用时才为该类型变量分配内存的存储类说明是

A auto和static

B auto和register

C register和static

D extern和register

参考答案

B

51已知函数定义如下:

floatfun1(intx,inty)

{

floatz;

z=(float)x/y;

return(z);

}

主调函数中有inta=1,b=0;可以正确调用此函数的语句是

A printf("%f",fun1(a,b));

B printf("%f",fun1(&a,&b));

C printf("%f",fun1(*a,*b));

D printf("%f",fun1(b,a));

参考答案

D

52设有说明int(*p)[4];其中的标识符p是

A 4个指向整型变量的指针变量

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

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

D 具有4个指向整型变量的指针元素的一维指针数组

参考答案

C

53已知:

chars[100];inti;则引用数组元素的错误的形式是

A s[i+10]

B *(s+i)

C *(i+s)

D *((s++)+i)

参考答案

D

54已知:

chars[6],*ps=s;则正确的赋值语句是

A s="12345";

B *s="12345";

C ps="12345";

D *ps="12345";

参考答案

C

55已知:

chara[3][10]={"BeiJing","ShangHai","TianJin"},*pa=a;不能正确显示字符串"ShangHai"的语句是

A printf("%s",a+1);

B printf("%s",*(a+1));

C printf("%s",*a+1);

D printf("%s",&a[1][0]);

参考答案

C

56已知:

inta[]={1,2,3,4,5,6,7,8,9,10,11,12},*p=a;则值为3的表达式是

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

B p+=2,*++p

C p+=2,*p++

D p+=2,++*p

参考答案

A

57已知:

inta[]={1,3,5,7},y*p=a;为使变量y的值为3,下列语句正确的是

A y=++*p++;

B y=++(*p++);

C y=(++*p)++;

D y=(*++p)++;

参考答案

D

58已知:

intx[]={1,3,5,7,9,11},*ptr=x;则能够正确引用数组元素的语句是

A x

B *(ptr--)

C x[6]

D *(--ptr)

参考答案

B

59已知charstr[]="OK!

";对指针变量ps的说明和初始化是

A charps=str;

B char*ps=str;

C charps=&str;

D char*pa=&str;

参考答案

B

60已知inta[3][4],*p=a;p+=6;那么与*p的值相同的是______。

A *(a+6)

B *(&a[0]+6)

C *(a[1]+=2)

D *(&a[0][0]+6)

参考答案

D

61已知inti=0,j=1,*p=&i,*q=&j;错误的语句是

A i=*&j;

B p=&*&i;

C j=*p++;

D i=*&q;

参考答案

D

62若有说明语句:

inta,b,c,*d=&c;,则能正确从键盘读入三个整数分别赋给变量a、b、c的语句是

A scanf("%d%d%d",&a,&b,d);

B scanf("%d%d%d",&a,&b,&d);

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

D scanf("%d%d%d",a,b,*d);

参考答案

A

63若定义:

inta=511,*b=&a;,则printf("%d\n",*b);的输出结果为

A 无确定值

B a的地址

C 512

D 511

参考答案

D

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

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

B p=(int*)malloc(2*sizeof(int));

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

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

参考答案

A

65有以下程序

main()

{

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

for(i=0;i<9;i+=2)

s+=*(t+i);

printf(“%d\n”,s);

}

程序执行后的输出结果是

A 45

B 20

C 25

D 36

参考答案

C

66有以下程序

main()

{

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

for(i=0;i<9;i+=2)

s+=*(t+i);

printf(“%d\n”,s);

}

程序执行后的输出结果是

A 45

B 20

C 25

D 36

参考答案

C

67

已知charx[5],*y=x;则正确的赋值语句是

A *y=“abcd”

B *x=“abcd”

C y=“abcd”

D x=“abcd”

参考答案

C

68已知:

int*p,a;则语句“p=&a;”中的运算符“&”的含义是

A 位与运算

B 逻辑与运算

C 取指针内容

D 取变量地址

参考答案

D

69已知:

inta,*p=&a;则下列赋值语句错误的是

A scanf(“%d”,&a);

B scanf(“%d”,*p);

C printf(“%d”,a);

D printf(“%d”,*p);

参考答案

B

70已知:

chars[10],*p=s,则在下列语句中,错误的语句是

A p=s+5;

B s=p+s;

C s[2]=p[4];

D *p=s[0];

参考答案

B

71已知:

intx则下面指针变量的语句正确的是

A intpb=&x;

B int*pb=x;

C int*pb=&x;

D *pb=*x;

参考答案

C

72以下语句或语句组中,能正确进行字符串赋值的是

A char*sp;*sp="right!

";

B chars[10];s="right!

";

C chars[10];*s="right!

";

D char*sp="right!

";

参考答案

D

73程序中若有如下的说明和定义语句

charfun(char*);

main()

{

char*s="one",a[5]={0},(*f1)()=fun,ch;

……

}

以下选项中对函数fun的正确调用语句是

A (*f1)(a);

B *f1(*s);

C fun(&a);

D ch=*f1(s)

参考答案

A

74若有语句:

char*line[5];,以下叙述中正确的是

A 定义line是一个数组,每个数组元素是一个基类型为char的指针变量

B 定义line是一个指针变量,该变量可以指向一个长度为5的字符型数组

C 定义line是一个指针数组,语句中的*号称为间址运算符

D 定义line是一个指向字符型函数的指针

参考答案

A

75设有定义:

intn1=0,n2,*p=&n2,*q=&n1;,以下赋值语句中与n2=n1;语句等价的

A *p=*q;

B p=q;

C *p=&n1;

D p=*q;

参考答案

A

76若有定义:

intx=0,*p=&x;,则语句printf("%d\n",*p);的输出结果是

A 随机值

B 0

C x的地址

D p的地址

参考答案

B

77有以下程序

main()

{inta[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],*q=p+2;

printf("%d\n",*p+*q);

}

程序运行后的输出结果是

A 16

B 10 

C 8

D 6

参考答案

B

78有以下程序

main()

{inta[]={2,4,6,8,10},y=0,x,*p;

p=&a[1];

for(x=1;x<3;x++)y+=p[x];

printf("%d\n",y);

}

程序运行后的输出结果是

A 10

B 11

C 14

D 15

参考答案

C

79以下定义语句中正确的是( )。

A chara='A'b='B';

B floata=b=10.0;

C inta=10,*b=&a;

D float*a,b=&a;

参考答案

C

80有以下程序

main()

{inta=7,b=8,*p,*q,*r;

p=&a;q=

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

当前位置:首页 > 法律文书 > 调解书

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

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