指针
1. 语句int *p;说明了 C 。
A)p是指向一维数组的指针
B)p是指向函数的指针,该函数返回一int型数据
C)p是指向int型数据的指针
D)p是函数名,该函数返回一指向int型数据的指针
2. 变量的指针,其含义是指该变量的:( B )
A. 值 B. 地址 C. 名 D.一个标志
3.若x是整型变量,pb是基类型为整型的指针变量,则正确的赋值表达式是( A )
A) pb=&x B) pb=x C) *pb=&x D) *pb=*x
4、已知:int a, *p=&a; 则下列函数调用中错误的是( D )。
A、scanf(“%d”,&a); B、scanf(“%d”,p);
C、printf(“%d”,a); D、printf(“%d”,p);
5.对于同类型的指针变量,不可能进行的运算是( C )。
A.- B.= C. D.==
6. 对于基类型相同的两个指针变量之间,不能进行的运算是 C
A) < B) = C) D) -
7.下列不正确的定义是( A )。
A. int *p=&i,i; B.int *p,i;
C.int i,*p=&i; D.int i,*p;
8. 若有说明:int n=2,*p=&n,*q=p,则以下非法的赋值语句是: ( D )
A)p=q B)*p=*q C)n=*q D)p=n
9. int *p,a=10,b=1; p=&a; a=*p b;
执行该程序段后,a的值为 C
A) 编译出错 B) 10 C) 11 D) 12
10.有语句:int a[10],;则 B 是对指针变量p的正确定义和初始化。
A)int p=*a; B)int *p=a; C)int p=&a; D)int *p=&a;
11.若有说明语句“int a[5],*p=a;”,则对数组元素的正确引用是( C )。
A.a[p] B.p[a] C.*(p 2) D.p 2
12. 若指针变量p指向整型数组a[10]的首地址, 即p=a ; 则下列数组元素a[i](0<i<10)的表示方法中正确的是:( C )
A. p i B.&( a i) C. *(a i) D. *(p i*2)
13. 有如下程序
int a[10]={1,2,3,4,5,6,7,8,9,10},*P=a;
则数值为9的表达式是 B
A) *P 9 B) *(P 8) C) *P =9 D) P 8
14.若有以下定义,则不能表示a数组元素的表达式是( B )。
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
A.*p B.a[10] C.*a D.a[p-a]
16. 若有以下说明:
int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;
则数值为4的表达式是( C )
A) *p 4 B) *(p 4) C) *(p 3) D) p 3
17. 下面程序的输出结果是 C
A) 0 B) 1 C) 2 D) 输出错误
main()
{ int a[ ]={1,2,3,4,5,6,7,8,9,0},*p;
p=a;
printf(“%d\n”,*p 1);
}
18. 执行语句 char c[10]={ ”abcd”},*pc=c; 后,*(pc 4)的值是( B )
A) “abcd” B)’\0’ C) ‘d’ D) 不确定
19.下列函数的功能是 A 。
void fun(int *p1,int *p2)
{ int p;
p=*p1;*p1=*p2;*p2=p;
}
A) 交换*p1和*p2的值 B) 语法正确,但无法交换*p1和*p2的值
C) 交换*p1和*p2的地址 D)有语法错误