5-1 学习-指针基本概念
(一)通过指针变量间接访问变量
#include <stdio.h>
int main(){
int x,y;
int *p; //定义指针变量P
p=&x; //使指针变量p指向一个变量x
/*****请在以下填写通过p输入输出x值代码*****/
/********** Begin *********/
scanf("%d",p);
printf("%d\n",*p);
/********** End **********/
p=&y; //使指针变量p指向另一个变量y
/*****请在以下填写通过p输入输出y值代码
/********** Begin **********/
scanf("%d",p);
printf("%d\n",*p);
return 0;
}
(二)交换两个指针变量的值
#include <stdio.h>
int main(){
int a=100,b=200;
int *p1, *p2, *p;
p1=&a; p2=&b;
scanf("%d%d",p1,p2);
/*****交换p1、p2的值*****/
/********** Begin *********/
p=p1; p1=p2; p2=p;
/********** End **********/
printf("%d %d\n",*p1,*p2);
return 0;
}
(三)利用指针方法求数组的最大值和最小值
#include<stdio.h>
#define M 3
main()
{
int a[M],i;
int *max,*min;
for(i=0 ;i<M; i++)
{
scanf("%d",&a[i]);
}
/***** 将指针变量max,min初始化 *****/
/********** Begin **********/
max = &a[0];
min = &a[0];
/********** End **********/
/***** 将每个数组元素依次与max,min指向的数组元素比较,使max,min分别指向的最大、最小的数组元素 *****/
/********** Begin **********/
for(i=0 ;i<M; i++){
if(a[i] > *max)
max = &a[i];
if(a[i] < *min)
min = &a[i];
}
/********** End **********/
/***** 通过指针变量max,min输出最大值和最小值 *****/
/********** Begin **********/
printf("min=%d\n",*min);
printf("max=%d\n",*max);
/********** End **********/
return 0;
}
5-2 学习-用指针遍历一维数组
#include <stdio.h>
int main()
{
int a[10],*p,i,j=0;
for(i=0;i<10;i++)
{
scanf("%d",&a[i]);
}
for(i=0;i<10;i++)
{
p=&a[i];
printf("%d ",*p);
}
getchar();
return 0;
}
5-3 练习-用指针实现数组元素逆置
#include <stdio.h>
#define N 10
int main()
{
/********** Begin **********/
int a[N],temp,i;
int *p1=&a[0],*p2=&a[N-1];
for(i=0;i<N;i++){scanf("%d",&a[i]);}
for(i=0;i<N/2;i++){temp=*p1;*p1=*p2;*p2=temp; p1++;p2--;}
for(i=0;i<N;i++){printf("%d ",a[i]);}
/********** End **********/
return 0;
}