//输入a、b、c 3个整数,按大小顺序输出
#include<stdio.h>
int sort(int *a,int *b,int *c){
int temp;
if((*a)>(*b)){
temp=*a;
*a=*b;
*b=temp;
}
if((*a)>(*c)){
temp=*a;
*a=*c;
*c=temp;
}if((*b)>(*c)){
temp=*b;
*b=*c;
*c=temp;
}
printf("从小到大的顺序%d,%d,%d",*a,*b,*c);
}
int main(){
int a,b,c,*x,*y,*z;
scanf("%d%d%d",&a,&b,&c);
x=&a;
y=&b;
z=&c;
return sort(x,y,z);
}
//通过指针变量输出a数组的10个元素
#include<stdio.h>
int main(){
int a[10],*p;
printf("请输入数组元素\n");
for(int i=0;i<10;i++){
scanf("%d",&a[i]);
}
printf("输出数组元素为\n");
p=a; //注意**
for(;p<(a+10);p++){
printf("%d",*p);
}
}
思路:
#include<stdio.h> //法2将x设成变量
void inv(int *x,int n){
int *p,temp,*i,*j,m=(n-1)/2;
i=x;j=x+n-1;p=x+m;
for(;i<=p;i++,j--){
temp=*i;
*i=*j;
*j=temp;
}
}
int main(){
int i,a[10]={1,2,3,4,5,6,7,8,9,6};
for(i=0;i<10;i++){
printf("%3d",a[i]);
}
printf("\n");
inv(a,10);
for(i=0;i<10;i++){
printf("%3d",a[i]);
}
}
#include<stdio.h>
int main(){
int a[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
int *p;
for(p=a[0];p<a[0]+12;p++){
if((p-a[0])%4==0)
printf("\n");
printf("%4d",*p);//顺序
}
}
/*有一个班,3个学生,各学4门课,计算总平均分数以及第n个学生的成绩。
这个题目是很简单的。只是为了说明用指向数组的指针作函数参数而举的例子。
用函数average求总平均成绩,用函数search找出并输出第i个学生的成绩。*/
#include<stdio.h>
void average(float *p,int n){
float sum=0,aver,*pend;
pend=p+n-1;
for(;p<=pend;p++){
sum=sum+(*p);aver=sum/n;
}
printf("average =%5.5f\n",aver);
}
void search(float (*p)[4],int n) // * p是指向具有4个元素的一维数组的指针 *
{
int i;
printf("the score of No.2 are\n",n);
for(i=0;i<4;i++){
printf("%5.4f",*(*(p+n)+i));
}
}
int main(){
float score[3][4]={{34,67,89,99},{13,78,98,56},{44,66,77,88}};
average(*score,12);//求12个分数的平均分
search(score,2);//*求序号为2的学生的成绩
}
将字符串a复制为字符串b
#include <stdio.h>
void main()
{char a[ ]=″I am a boy.″,b[20];
int i;
for(i=0;*(a+i)!=′\0′;i++)
(b+i)=(a+i);
*(b+i)=′\0′;
printf(″string a is :%s\n″,a);
printf(″string b is:″);
for(i=0;b[i]!=′\0′;i++)
printf(″%c″,b[i]);
printf(″\n″);
用指针变量来处理例10.17问题
#include <stdio.h>
void main()
{char a[ ] =″I am a boy. ″,b[20],*p1,*p2;
int i;
p1=a;p2=b;
for(;*p1!=′\0′;p1++,p2++)
p2=p1;
*p2=′\0′;
printf(″string a is:%s\n″,a);
printf(″string b is:″);
for(i=0;b[i]!=′\0′;i++)
printf(″%c″,b[i]);
printf(″\n″);
}