任务描述
本关任务:编写程序用指针变量遍历一个数组。
相关知识
为了完成本关任务,你需要掌握: 1.指向数组元素的指针的运算 2.如何遍历数组。
视频1 指针与一维数组
指向数组元素的指针的运算
指针与整数的加减运算
有数组和指针变量的定义如下:
int a[10],*p=a;
数组名代表数组的首地址,也就是数组元素a[0]
的地址,现在指针变量p
已指向数组中的第一个元素a[0]
,假设a[0]
的地址为0x0022ff40
,则p
的值为0x0022ff40
,则p+1
的值为0x0022ff44
,p+1
指向同一数组中的下一个元素,而p-1
的值为0x0022ff3c
,p-1
指向同一数组中的上一个元素,数组已经越界,系统不做数组越界检查。同理, p+i
指向数组的第i
个数组元素a[i]
。指针与整数的加减运算结果是一个指针。
两个指针相减运算
有数组和指针变量的定义如下:
int a[10],*p1=&a[3],*p2=&a[5];
两个指针变量p1
和p2
可以进行相减运算,结果是一个整数,但是只有在p1
和p2
都指向同一数组中的元素时才有意义,现在p1
指向a[3]
,p2
指向a[5]
,那么p2-p1
的值是整数 2,表示两个指针p1
、p2
之间数组元素的个数。
注意:指针变量不能做加法运算,如不能有
p1+p2
的运算。
两个指针的关系运算
有数组和指针变量的定义如下:
int a[10],*p1=&a[3],*p2=&a[5];
两个指针变量p1
和p2
可以进行比较运算,若p1<p2
为真,则表示p1
指向的数组元素在前,p2
指向的数组元素在后;若p1<p2
为假,则相反;若p1==p2
,则表示p1
与p2
指向同一元素。若p1
与p2
不指向同一数组,比较无意义。指针变量还可以与NULL
比较,表示是否指向了一个变量,如p==NULL
或p!=NULL
。
编程要求
根据提示,在右侧编辑器 Begin-End 区间补充代码,输入并输出数组的值。
测试说明
平台会对你编写的代码进行测试:
测试输入:4
91
51
2
32
16
31
79
42
82
预期输出:4
91
51
2
32
16
31
79
42
82
开始你的任务吧,祝你成功!