一、实验目的
1 .掌握指针的概念,会定义和使用指针变量。
2 .学会使用数组的指针和指向数组的指针变量。
3 .学会使用字符串的指针和指向字符串的指针变量。
4 .了解指向指针的指针的概念及其使用方法。
二、实验例题
1.通过指针变量访问整型变量。
main()
{ int a,b,*p1,*p2;
a=10; b=30;
p1=&a;
p2=&b;
printf( “ %d,%d\n ” ,a,b);
printf( “ %d,%d\n ” ,*p1,*p2);
}
2.使用指针变量把输入的两个整数 a , b 按由大到小的次序输出。
main()
{ int a,b,*p1,*p2,*p;
scanf( “ %d%d ” ,&a,&b);
p1=&a; p2=&b;
if(a<b)
{ p=p1; p1=p2; p2=p;}
printf( “ a=%d, b=%d\n ” ,a,b);
printf( “ max=%d,min=%d\n ” *p1,*p2);
}
运行时输入数据为: 8 18 ↙
3. 使用指针变量作为函数的参数,把输入的两个整数 a , b 按由大到小的次序输出。
swap( int *q1, int *q2)
{ int t;
t=*q1;
*q1=*q2;
*q2=t;
}
main()
{ int a,b,*p1,*p2;
scanf( “ %d%d ” ,&a,&b);
p1=&a; p2=&b;
if( a<b ) swap(p1,p2);
printf( “ %d,%d\n ” ,a,b);
}
运行时输入数据为: 8 18 ↙
4.用指向数组元素的指针变量处理数组,输出数组 a 的 10 个元素。
main()
{ int a[10],i,*p;
for(i=0;i<10;i++)
scanf( “ %d ” ,&a[i]);
printf(( “ \n ” );
for(p=a;p<(a+10);p++)
printf( “ %d ” ,*p);
}
5.用选择排序法对 10 个整数按由大到小排序。
void sort( int x[],int n)
{ int i,j,k,t;
for(i=0;i<n-1;i++)
{ k=i;
for(j=i+1;j<n;j++)
if(x[j]>x[k]) k=j;
if(k!=i)
{ t=x[i]; x[i]=x[k]; x[k]=t;}
}
}
main()
{ int *p,i,a[10];
p=a;
for(i=0;i<10;i++)
scanf( “ %d ” ,p++);
p=a;
sort(p,10);
for(p=a,i=0;i<10;i++)
printf( “ %d ” ,*p++);
}
三、实验习题
从键盘输入三个整数,定义三个指针变量 p1 , p2 , p3 ,使 p1 指向三个数中的最大者, p2 指向次大者, p3 指向最小者,然后按由大到小的次序输出三个数。 |