云题海 - 专业文章范例文档资料分享平台

当前位置:首页 > 第十章 指针

第十章 指针

  • 62 次阅读
  • 3 次下载
  • 2025/5/2 1:29:41

第十章 指针

一、选择题

1. 变量的指针,其含义是指该变量的_______________。 A) 值 B) 地址 C) 名 D)一个标志

2. 已有定义int k=2; int *ptr1, *ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值是________________。

A) k=*ptr1+*ptr2 B) ptr2=k C) ptr1=ptr2 D)k=*ptr1*(*ptr2) 3. 若有定义int *p, m=5,n;以下程序段正确的是________________。

A) p=&n; B) p=&n; scanf(\ scanf(\C) scanf(\ D) p=&n;

*p=n; *p=m;

4. 若有定义:int *p1, *p2, m=5, n;以下____________是正确的赋值语句。

A) p1=&m; p2=&p1; B)*p1=*p2; C) p1=&m; p2=p1; D) p1=&m; *p2=*p1; 5.若有int *p, a=4;和p=&a;下面____________均代表地址。

A) a, p, *&a B)&*a, &a, *p C) *&p, *p, &a D)&a, &*p, p

6.若变量已正确定义并且指针p已经指向变量x,则*&x相当于____________。 A) x B) p C) &x D) &*p

7. 若定义了int m, n=0, *p1=&m;则下列____________表达式与m=n等价。 A) m=*p1 B)*p1=&*n C) *&p1=&*n D) *p1=*&n; 8. 假如指针p已经指向整型变量x,则(*p)++相当于____________。 A) x++ B) p++ C) *(p++) D) &x++

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

A) < B) = C) + D) -

10. 若程序中已包含头文件stdio.h,以下选项中正确运用指针变量的程序段是__________。

A) int *i=NULL; B) float *f=NULL

scanf(\ *f=10.5; C) char t='m',*c=&t; D) long *L;

*c=&t; L='\\0';

11. 有如下函数和变量定义int a=25; 执行语句print_value(&a);后的输出结果是___________。 void print_value(int *x)

{ printf(\ }

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

12. 若有定义:char s[10]; 则在下面表达式中不表示s[1]的地址的是___________。 A) s+1 B) s++ C) &s[0]+1 D) &s[1]

13.若有定义:int a[5], *p=a; 则对a数组元素的正确引用是_____________。 A)*&a[5] B)a+2 C)*(p+5) D)*(a+2)

14. 若有定义:int a[5], *p=a; 则对a数组元素地址的正确引用是_____________。 A)p+5 B)*a+1 C)&a+1 D)&a[0]

15. 若有定义:int a[5]; 则a数组中首元素的地址可以表示为_____________。 A)&a B)a+1 C)a D)&a[1]

16. 若要对a进行合法的自减运算,则之前应有下面___________的说明。

A) int p[3]; B) int k; C) char *a[3]; D) int b[10];

int *a=p; int *a=&k; int *a=b+1; 17. 以下选项中,________________对指针变量p的操作是正确的。

A) int a[3], *p; B) int a[5], *p; p=&a; p=a;

C) int a[5]; D) int a[5], *p1, *p2=a;

int *p=a=100; *p2=*p1;

18若有定义int x[10]={0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, *p1;则数值不为3的表达式是___________。 A) x[3] B) p1=x+3,*p1++ c) p1=x+2,*(p1++) D) p1=x+2, *++p1

19. 设int x[]={1, 2, 3, 4, 5, 6, 7, 8, 9, 0}, *p=x, k; 且0≤k≤10,则对数组元素x[k]的错误引用是___________。

A) p+k B) *(x+k) c) x[p-x+k] D) *(&x[k])

20. 若有定义int a[3]={ 1, 2, 3}, *p;则下列赋值语句中正确的是___________。 A) p=&a; B) *p=a; C) *(a+1)=a; D) p=a+1;

21. 设int b[]={1, 2, 3, 4}, y, *p=b;执行语句y=*p++;后变量y的值为___________。 A) 1 B) 2 C) 3 D) 4 22. 下面程序段执行后的输出结果是_____。

#include void main() {

int a[]={2, 4, 6, 8, 10}, y=0, x, *p=&a[1]; for(x=1; x<3; x++) y+=p[x];

pritnf(\}

A) 10 B) 11 C) 14 D) 15

23.若有定义int a[2][3];则对a数组的第i行第j列元素地址的正确引用是_____。

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

24. 若有定义int a[4][6];则能正确表示a数组中任一元素a[i][j](i,j均在有效范围内)地址的表达式是_____。

A) &a[0][0]+6*i+j B) &a[0][0]+4*j+i C) &a[0][0]+4*i+j D) &a[0][0]+6*j+i 25. 若有定义int a[3][4];则与元素a[0][0]不等价的表达式是_____。 A) *a B) **a C) *a[0] D) *(*(a+0)+0) 26. 若有定义int a=3, b, *p=&a; 则下列语句中___________使b不为3。 A) b=*&a; B) b=*p; C) b=a; D) b=*a;

27. 若有定义int t[3][2];则能正确表示t数组元素地址的表达式是_____。 A)&t[3][2] B)t[1][1] C)t[2] D)t[3] 28. 若有定义int a[4][5];下列_____引用是错误的。

A) *a B) *(*(a+2)+3) C) &a[2][3] D) ++a

29. 若有定义int s[4][5], (*ps)[5]=s;;则对s数组元素的正确引用是_____。 A) ps+1 B) *(ps+3) C) ps[0][2] D) *(ps+1)+3

30. 若有定义int c[4][5]; (*p)[5]=c;;则能正确引用c数组元素的是_____。 A) p+1 B) p[3] C) p[1]+3 D) *(p[0]+2) 31.下面程序执行后的输出结果是___________。

#include void main()

{ }

A) 9 B) 11 C) 17 D) 19

32.若有程序段int a[2][3], (*p)[3]; p=a;则对a数组元素地址的正确引用是___________。 A) *(p+2) B) p[2] C) p[1]+1 D) (p+1)+2

33. 若有程序段int a[2][3], (*p)[3]; p=a;则对a数组元素的正确引用是___________。 A) (p+1)[0] B) *(*(p+2)+1) C) *(p[i]+1) D) p[1]+2 34.下面程序执行后的输出结果是___________。

#include void main() {

int a[3][3], *p, i;

p=&a[0][0];

for(i=0; i<9; i++) p[i]=i+1; printf(\

}

A) 3 B) 6 C) 9 D) 随机值

35.若有定义int (*p)[4]; 则标识符p___________。

A) 是一个指向整型变量的指针 B) 是一个指针数组名 C) 是一个指针,它指向一个含有四个整型元素的一维数组 D) 定义不合法 36.以下正确的定义和赋值语句是___________。 A) int b[3][5], (*p)[5], (*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;

37.若要对a进行合理的自增运算,则a应具有_______________说明。 A) int a[3][2]; B) char *a[]={\ C) char (*a)[3]; D) int b[10], *a=b; 38.下面程序运行时从键盘上输入:1 2 3回车,其输出结果是___________。 #include void main()

{

int a[3][2]={0}, (*ptr)[2], i, j;

for(i=0; i<2; i++) {ptr=a+i; scanf(\ for(i=0; i<3; i++)

for(j=0; j<2; j++) printf(\

}

A) 编译错误信息 B) 6102000 C) 123000 D) 102030

39.若有定义int x[4][3]={1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12}; int (*p)[3]=x;则能够正确表示数组元素x[1][2]的表达式是_______________。

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

int a[][4]={1, 3, 5, 7, 9, 11, 13, 15, 17, 19, 21, 23}; int (*p)[4], i=2, j=1; p=a;

printf(\

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

A) c=*p1+*p2; B) p2=c; C) p1=p2; D) c=*p1*(*p2); 41. 下面判断正确的是_____________。

A) char str[10]={\等价于char str[10]; str[]={\china\B) char *a=\等价于char *a; *a=\C) char *s=\等价于char *s; s=\

D) char c[4]=\等价于char c[4]=d[4]=\42.下面能正确给字符串s赋值的是___________________。

A) char s[6]=\ B) char s[5]={'A', 'B', 'C', 'D', 'E'};

C) char s[6]; s=\ D) char *s; scanf(\

43.若有程序段char s[]=\以下叙述中正确的是___________________。 A) s和p完全相同 B) 数组s中的内容和指针变量p中的内容相等 C) *p与s[0]相等 D) s数组长度和p所指向的字符串长度相等 44.以下不正确的是___________________。

A) char a[10]=\ B) char a[10], *p=a; p=\

C) char *a; a=\ D) char a[10], *p=a; p=a=\

45.若有定义char a[]=\以下叙述中错误的是___________________。 A) a+1表示的是字符't'的地址 B) p不能再指向别的字符串常量 C) p变量中存放的地址值可以改变 D) a数组所占字节数为9 46.若有定义char s[6], *ps=s;则正确的赋值语句是___________________。

A) s=\ B) *s=\ C) ps=\ D) *ps=\47.若有定义char s[10], *p=s;下列语句中错误的是___________________。

A) p=s+5; B) s=p+s; C) s[2]=p[4]; D) *p=s[0]; 48.若有定义char *cc[2]={\以下叙述中正确的是___________________。 A) cc数组的两个元素中各自存放了字符串\和\的首地址

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

C) cc是指针变量,它指向含有两个数组元素的一维字符数组 D) cc数组元素的值分别是\和\

49.若有定义char *language[]={\VA\则language[2]的值是___________________。

A) 一个字符 B) 一个地址 C) 一个字符串 D) 一个不定值 50.若有定义char ch[]={\*p=ch;执行语句printf(\后的输出结果是___________________。

A) def B) d C) e D) 0 51.下面程序段中,for循环的执行次数是________________。 char *s=\

for(; *s!='\\0'; s++) printf(\

A) 9 B) 7 C) 6 D) 50 52.下面程序段执行后的输出结果是___________。 char *s=\

s+=2;

printf(\

A) cde B) 字符'c' C) 字符'c'的地址 D) 不确定

搜索更多关于: 第十章 指针 的文档
  • 收藏
  • 违规举报
  • 版权认领
下载文档10.00 元 加入VIP免费下载
推荐下载
本文作者:...

共分享92篇相关文档

文档简介:

第十章 指针 一、选择题 1. 变量的指针,其含义是指该变量的_______________。 A) 值 B) 地址 C) 名 D)一个标志 2. 已有定义int k=2; int *ptr1, *ptr2;且ptr1和ptr2均已指向变量k,下面不能正确执行的赋值是________________。 A) k=*ptr1+*ptr2 B) ptr2=k C) ptr1=ptr2 D)k=*ptr1*(*ptr2) 3. 若有定义int *p, m=5,n;以下程序段正确的是________________。 A) p=&n; B) p=&n; scanf(\ scanf(\C) s

× 游客快捷下载通道(下载后可以自由复制和排版)
单篇付费下载
限时特价:10 元/份 原价:20元
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:fanwen365 QQ:370150219
Copyright © 云题海 All Rights Reserved. 苏ICP备16052595号-3 网站地图 客服QQ:370150219 邮箱:370150219@qq.com