问题 A: 【数组 指针】指针指向数组元素
题目:
指针p指向数组a的元素a[i],常有以下3种方式
1. p=a+i;
2. p=&a[i];
3. 先让p指向数组a,即指向a[0],然后让p不断地++,让它分别指向a[1]、a[2]、.........。
下面,你就尝试一下,用这种方式,让指针指向数组元素
样例输入
无
样例输出
3 5 7 9 3 5 7 9 3 5 7 9
一下是此题的代码:
#include<stdio.h>
int main()
{
int a[4]={3,5,7,9};
int i,*q,*p;
for(i=0;i<4;i++)
{
p=a+i;//让p指向数组a[i],遍历每一个数组元素
printf("%d ",*p);
}
printf("\n");
for(int i=0;i<4;i++)
{
p=a;//让P指向数组a的首个元素
p++;//遍历后面的每一个元素
printf("%d ",*p);
}
printf("\n");
for(int i=0;i<4;i++)
{
p=&a[i];//p指向数组a,并遍历数组中的每一个元素
printf("%d ",*p);
}
printf("\n");
return 0;
}
问题 B: 【数组 指针】数组元素输入
数组元素的输入,原来只有一种方式,即scanf("%d",&a[i]); 学习了指针以后,增加了二种方式。
1. scanf("%d",a+i);
2. 指针p=a,然后不断p++,让p指向后移,scanf("%d",p);
下面,试用一下这3种方式。
样例输入
3 5 7 9 3 5 7 9 3 5 7 9
样例输出
3 5 7 9 3 5 7 9 3 5 7 9
代码如下:
#include<stdio.h>
int main()
{
int a[4];
int i,*p;
for(i=0;i<4;i++)
scanf("%d ",&a[i]);
//方法一:
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}
printf("\n");
//方法二
for(p=a;p<a+4;p++)
scanf("%d",p);
for(p=a;p<a+4;p++)
{
printf("%d ",*p);
}
printf("\n");
//方法三:
for(i=0;i<4;i++)
scanf("%d",a[i]);
for(i=0;i<4;i++)
{
printf("%d ",a[i]);
}
printf("\n");
return 0;
}