当前位置:首页 > 第八章 指针
一、概念题
1.下列定义的含义
(1)int *p[3]; (2)int (*p)[3]; (3)int *p(int); (4)int (*p)(int); (5)int **p;
2.语句int a,*p=&a;的含义是什么?
3.二维数组a[3][4],&a[i][j]表示_____________,a表示___________,a[0] 表示____________。
4.下列数组元素的指针法表示。 (1)num[3] (2)data[4][2]
写出下列数组元素的下标法表示。 (1)*(*(a+1)+2) (2)(*(a+3))[4] (3)*(a[2]+5)
二、判断题
1.若定义int i,*p; 使p指向i的赋值语句是 *p=&i ( )。
2.若定义int i=100,*p=&i;设为i分配的内存地址为200~201,则*p为100 ( )。 3.若定义int a,b,*p1=&a,*p2=&b;使p2也指向a的赋值语句是p2=p1 ( )。 4.设p是一个指针变量,则int a[6],*p;p=&a;使指针p指向数组a。( )。 5.a是一维数组名,数组元素a[1]还可以写作“*(a++)”( )。 6.p为指向字符串的指针变量,*p表示所指字符串的值( )。 7.若定义int b[8], *p=b;则数组元素b[4]地址的引用为p+4 ( )。 8.若定义int b[8], *p=b;则执行p++;后,p指向b[1]( )。 9.对于定义int a[10], *p=a+8;数组a的最后一个元素是p[1]( )。
三、单选题
1. 设int *p,i;以下正确地语句是( )。
A. p=10;
B. i=p;
C. i=*p ;
D. p=&i;
2. 设char s[10];*p=s;以下语句不正确的是( )。
A. p=s+5; B. s=p+5;
C.s[2]=p[4]; D. *p=s[0];
3. 若有下列定义:char c[3],*pc=c; 则对c数组元素地址的正确引用是( )。
A. &c[3] A. *pf--
B. pc+2 B. *(--pf)
C. c++ C. *(pf++)
D. &c D. *(++pf)
4. 已知:float f [ ]={1.0, 2.3 , 4.5}, *pf=f; 则以下哪项不能正确引用数组元素( )。
5. 声明语句为“int a[3][4];”,下列表达式中与数组元素a[2][1]等价的是( )。
A.*(a[2]+1) B. a[9] C. *(a[1]+2) D. *(*(a+2) ) +1 6. 设变量定义为:int n,*p;char ch,*q,*g;,则不正确的语句是( )。
A. p=&n;g=q=&ch; C. p=&n;g=&ch
B. p=&n;q=&ch; D. p=&n;q=&ch;g=p; 7. 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是( )。
A. scanf(\
B. scanf(\
C. scanf(\
D. scanf(\
8. 不正确的赋值或赋初值的方式是( )。
A. char str[6]={'s', 't', 'r', 'i', 'n', 'g'}; B. char str[10]= \C. char *str=\
D. char str[10]; str=\;
9. 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是( )。
A. char s[10]=\
B. char t[]=\
C. char s[10];s=\D. char s[10];strcpy(s,\10. 设char *s; 以下正确地语句是( )。
A. s=”computer”; B.* s=”computer”;
C. *s=” ”;
D.*s=?c?;
11. 设有程序段:“char s[ ]= \”则下面叙述正确的是( A. *p与s[0]相等
B. s和p完全相同
C. s数组长度和p所指向的字符串长度相等 D. 数组s中的内容和指针变量p中的内容相等 12. 以下程序执行的结果( )。
main()
{ int a,b, k=4, m=6, *p1=&k, *p2=&m; a=p1==&m; b=(*p1)/(*p2)+7;
printf(\}
A. a=4, b=7
B. a=0, b=7 C. a=4, b=0 D. a=0, b=0
13. 下列程序段的输出结果是( )。
int *p, *q, k = 5, j=10; p=&j; q = &k ;p = q ; (*p)++; printf(\A. 5
B. 6
C. 10
D. 11
14. 下列程序段的输出结果是( )。
int c[ ]={1, 7, 12}; int *k=c+1;
。 )
printf(\A. 2 main()
{ int a[5]={1,2,3,4,5}; int *p=&a[1]; printf(\ A. 2;
B. 3;
C.4;
D.5;
16. 以下程序执行的结果( )。
#include
{ int a[]={1,2,3,4,5,6}; int *p; p=a; *(p+3)+=2;
printf(“%d,%d\\n”, *p,*(p+3)); } A. 1,3
B. 1,6
C. 3, 6
D. 1, 4
17. 下列程序的输出结果是( )。
#include
printf(\} A. (0, 2) A. &a[2]-2
B. (0, 3) B. 5
C. (1, 3) D. 1
D. p=EOF D.(1, 2)
18. 设变量定义为 int a[3]={1,4,7},*p=&a[2]-2,则*p的值是( )。
C. 2
19. 若变量己正确定义,下列不能使指针p成为空指针的是( )。 A. p='\\0' B. p=0 C. p=NULL 20. 有以下定义
#include
不能给数组a输入字符串的语句是( )。 21. 以下程序执行的结果( )。
B. 7
C. 8
D. 12
15. 以下程序执行的结果( )。
A. gets(a) B. gets(a[0]) C. gets(&a[0]); D. gets(b);
main()
{ char a[]=\ char *p=a; p=p+2;
printf(\A. I love China! 22. 阅读以下函数
int fun(char *sl,char *s2) { int i=0;
while(sl[i]==s2[i]&&s2[i]!='\\0') i++; return(sl[i]=='\\0'&&s2[i]=='\\0'); }
此函数的功能是( )。 A. 将s2所指字符串赋给s1
B. 比较s1和s2所指字符串的大小,若s1比s2的大,函数值为1,否则函数值为0 C. 比较s1和s2所指字符串是否相等,若相等,函数值为1,否则函数值为0 D. 比较s1和s2所指字符串的长度,若s1比s2的长,函数值为1,否则函数值为0 23. 以下程序执行的结果( )。
main()
{ char str[]=\ while(*ps)ps++;
for(ps--;ps-str>=0;ps--) puts(ps); } A. yz xyz xyz main()
{ int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12}; int (*pa)[4]=a; pa++;
printf(\A. 3 A. 函数
main()
{ char *s[]={\
B. 7
C.10
D. l1 C.指针变量
D. 数组
25. 对于变量定义char *pp[100],pp是一个( )。
B. 数组元素
26. 以下程序执行的结果( )。
B. z yz xyz
C. y yz xyz
D. x xy
B. love China!
C. China!
D. l
24. 以下程序执行的结果( )。
共分享92篇相关文档