8 指针
1. 有以下定义
#include
char a[10],*b=a;
不能给数组a输入字符串的语句是()
A)gets(a)
B)gets(a[0])
C)gets(&a[0]);
D)gets(b);
2. 有如下说明
int a[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
3. 设有定义:int a,*pa=&a;以下scanf语句中能正确为变量a读入数据的是()
A)scanf("%d",pa);
B)scanf("%d",a);
C)scanf("%d",&pa);
D)scanf("%d",*pa);
4. 已有定义:int i,a[10],*p;,则合法的赋值语句是
A) p=100;
B) p=a[5];
C)p=a[2]+2;
D) p=a+2;
5. 程序中对fun函数有如下说明
void *fun();
此说明的含义是:
A) fun函数无返回值
B)fun函数的返回值可以是任意的数据类型
C) fun函数的返回值是无值型的指针类型
D) 指针fun指向一个函数,该函数无返回值
6. 若有说明:int n=2,*p=&n,*q=p;,则以下非法的赋值语句是
A) p=q;
B) *p=*q;
C) n=*q;
D) p=n;
7. 若有定义:int *p[3];,则以下叙述中正确的是
A)定义了一个基类型 为int的指针变量p,该变量具有三个指针
B)定义了一个指针数组p,该数组含有三个元素,每个元素都是基类型为int的指针
C)定义了一个名为*p的整型数组,该数组含有三个int类型元素
D)定义了一个可指向一维数组的指针变量p,所指一维数组应具有三个int类型元素
8. 有以下程序段
main()
{ int a=5,*b,**c;
c=&b; b=&a;
……
}
程序在执行了c=&b;b=&a;语句后,表达式:**c的值是
A)变量a的地址
B)变量b中的值
C)变量a中的值
D) 变量b的地址
9. 设有定义语句
int x[6]={2,4,6,8,5,7},*p=x,i;
要求依次输出x数组6个元素中的值,不能完成此操作的语句是
A) for(i=0;i<6;i++) printf("%2d",*(p++));
B) for(i=0;i<6;i++) printf("%2d",*(p+i));
C) for(i=0;i<6;i++) printf("%2d",*p++);
D) for(i=0;i<6;i++) printf("%2d",(*p)++);
10. 有以下程序
main()
{ int a[3][3],*p,i;
p=&a[0][0];
for(i=0;i<9;i++) p[i]=i+1;
printf("%d \n",a[1][2]);
}
程序运行后的输出结果是
A)3
B)6
C)9
D)2
11. 有以下程序
main()
{ char *s[]={"one","two","three"},*p;
p=s[1];
printf("%c,%s\n",*(p+1),s[0]);
}
执行后输出结果是
A) n,two
B) t,one
C) w,one
D) o,two
12. 有以下程序
main()
{ int x[8]={8,7,6,5,0,0},*s;
s=x+3;
printf("%d\n",s[2]);
}
执行后输出结果是
A) 随机值
B) 0
C) 5
D) 6
13. 有以下程序段
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=&a[3],b;
b=p[5];
b中的值是
A)5
B)6
C)8
D)9