C程序设计 第八章 指针

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

一、概念题

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 ( F )。

2.若定义int i=100,*p=&i;设为i分配的内存地址为200~201,则*p为100 ( T )。

3.若定义int a,b,*p1=&a,*p2=&b;使p2也指向a的赋值语句是p2=p1 ( T )。

4.设p是一个指针变量,则int a[6],*p;p=&a;使指针p指向数组a。( F )。

5.a是一维数组名,数组元素a[1]还可以写作“*(a++)”( F)。

6.p为指向字符串的指针变量,*p表示所指字符串的值( F)。

7.若定义int b[8], *p=b;则数组元素b[4]地址的引用为p+4 ( T )。

8.若定义int b[8], *p=b;则执行p++;后,p指向b[1](T )。

9.对于定义int a[10], *p=a+8;数组a的最后一个元素是p[1](T )。

三、单选题

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]

B. pc+2

C. c++

D. &c

4. 已知:float f [ ]={1.0, 2.3 , 4.5}, *pf=f; 则以下哪项不能正确引用数组元素()。

A. *pf--

B. *(--pf)

C. *(pf++)

D. *(++pf)

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;

B. p=&n;q=&ch;

C. p=&n;g=&ch

D. p=&n;q=&ch;g=p;

7. 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()。

A. scanf("%d",pa);

B. scanf("%d",a);

C. scanf("%d",&pa);

D. scanf("%d",*pa);

8. 不正确的赋值或赋初值的方式是( )。

A. char str[6]={'s', 't', 'r', 'i', 'n', 'g'};

B. char str[10]= "string";

C. char *str="string";

D. char str[10]; str="string";

9. 以下程序段中,不能正确赋字符串(编译时系统会提示错误)的是()。

A. char s[10]="abcdefg";

B. char t[]="abcdefg",*s=t;

C. char s[10];s="abcdefg";

D. char s[10];strcpy(s,"abcdefg");

10. 设char *s; 以下正确地语句是()。

A. s=”computer”;

B.* s=”computer”;

C. *s=” ”;

D.*s=‟c‟;

11. 设有程序段:“char s[ ]= "char array"; char *p; p=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=%d, b=%d\n",a,b);

}

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("%d",*q);

A. 5

B. 6

C. 10

D. 11

14. 下列程序段的输出结果是( )。

int c[ ]={1, 7, 12};

int *k=c+1;

相关文档
最新文档