内容正文:
第八章指针
学习目标
1.理解指针的概念。
2.掌握指向简单变量的指针用法。
3.掌握指向数组的指针变量的用法。
4.掌提指针作为函数参数的用法。
■同步训练
5.下列语句定义p为指向loa类型变量d的指
一、选择题
针,其中正确的是(
)o
A.float d,*p=d:
B.float d,p=&d;
L.pl指向某个整型变量,要使指针p2也指
C.float *p=&d.d;
D.float d.p=d:
向同一变量,正确的语句是(
)。
6.假如指针p已经指向某个整型变量x,则
A.p2=*&pl:
B.p2=**pl:
(*p)+相当于(
)a
C.p2=&pl:
D.p2=*pl:
A.p叶+
B.x++
2.若有说明“inti,j=7,*p=&i:”,则与
C.*(p+)
D.&x+
“i=j:”等价的语句是()。
7.设p1和p2是指向同一个字符串的指针变
A.i=*p:
B.*pP=*&j:
量,c为字符变量,则以下不能正确执行
C.i=&j:
D.i=**p:
赋值语句的是(
o
3.假如指针p已经指向变量x,则&*p相当于
A.c=*pl+*p2
B.p2=c
()。
C.pl=p2
D.c=*pl*(*p2)
A.x
B.*p
8.下列各语句定义了数组,其中正确的是
C.&x
D.**p
(
o
4.若有语句“int*point,a=4:”和“point=&a”
A.char a[101.*p=af0]
则下面均代表地址的一组是()。
B.intd20=1,2,3.4,5,6:
A.a.point,*&a
C.1oatx03=1,2.4,6,8,10
B.&a,point.&a
D.intm00="no_1","no_2","no_3":
C.&a.*&point.*point
9.有以下程序,其输出结果是(
)。
D.&a.&point.point
main()
70
第一部分编程语言基础—C语言◆◆◆◆
{
char a[]="programming"
B.aa是指针变量,它指向含有两个数组元
b="language";
素的字符型一维数组
char *pl,*p2;
C.aa数组的两个元素分别存放的是含有4
int i;
个字符的一维字符数组的首地址
pl=a;p2=b:
D.aa数组的两个元素中各自存放了字
for (i=0;i<7;i++)if (pl+i)
符a和'A'的地址
==p2+i)printf ("%c".
14.下面程序输出数组中的最大值,由s指针
*(pl+i)):
指向该元素。
main()
A.gm
B.rg
inta106,72,9,1,10,5,8.4,3,,*p,*s
C.or
D.ga
fr(p=a,s=:p-a<l0:p+))
10.设P1和P2是指向同一个int型一维数组的
if
)s=p
指针变量,k为int型变量,则不能正确
printf "The max:%d",*s);
执行的语句是(
A.k=*P1+*P2:
则在if语句中的判断表达式应该是
B.p2=k;
()。
C.P1=P2:
D.K=*P1*(*P2):
A.p>s
B.*p>*s
11.若有定义“inta5,*p=a”,则对a数组
C.alppa[s]
D
元素的引用正确的是(
)。
p-a>p-s
A.*a+1
15.下列程序有两个orintf语句,如果第一个
B.p+5
C.&a+l
D.&a[0]
printf语句输出的是194,则第二个printf
12.对于语句“imta10,*p=:”,下列表述
语句的输出结果是()。
中正确的是()。
main (
A.*p被赋初值为a数组的首地址
inta10]=1,2,3.4.5,6,7,8,9,
B.*p被赋初值为数组元素aO的地址
01,*p
C.p被赋初值为数组元素a1的地址
p=a;
D.p被赋初值为数组元素O的地址
printf("%xn",p);
13.若“char*aa2=("abcd","ABCD":”,则
printf ("Ox n".p+9):
以下说法中正确的是()。
A.aa数组元素的值分别是"abcd"和
A.203
B.204
"ABCD"
C.1a4
D.1a6
71义
职升课堂·计算机应用1◆
16.设有定义“int arr0=(6,7,8,9,10:int
*ptr:”,则下列程序段的输出结果为
A.17
B.18
()。
C.19
D.20
ptr=arr;
20.若有以下的说明和语句,则下列选项中
*(ptr+2)+=2:
能正确表示:数组元素地址的表达式是
printf("%d,%d小n",*ptr,*(ptr+2));
()
A.8.10
B.68
main (
C.7.9
D.6.10
int