指针8(应用指针向函数传递数组)

要在函数中使用实参数组元素或改变实参数组元素的值,有三种对应方法
1)实参用数组名,形参用指针变量。
2)实参用指针变量,形参用数组名
3)实参和形参都用指针变量
给出一道例题
应用函数与指针,对长度为10的一维数组进行从小到大排序。

#include<stdio.h>
void sort(int*p,int n)
{int i,j,temp;
 for(i=0;i<n-1;i++)
  { for(j=i+1;j<n;j++)
    {if(*(p+i)>*(p+j))
      {temp=*(p+i);
       *(p+i)=*(p+j);
       *(p+j)=temp;
	  }
    }
  }
}
int main()
{int a[10],*pa,i;
 pa=a;
 printf("Input 10 integer:");
 for(i=0;i<10;i++)
 {scanf("%d",pa++);
 }
 pa=a;//使pa重新指向a [0]
 sort(pa,10);
 for(i=0;i<10;i++)
 {printf("   %d",*pa++);
 }
 return 0;
}

在这里插入图片描述

程序采用指针变量作形参和实参。在main函数中,先将数组a的首地址付给指针变量pa,然后用for循环读入数组元素值。由于使用pa++,for循环结束时pa的值已变成pa+10,不再指向a[0],因此,又第二次使用“p=a;”语句,使pa重新指向a[0]。在函数调用时,实参pa将数组a的首地址传给形参p,p就指向a[0],*(p+i)也就是a[i]。当然,在函数sort中,也可以用p[i ]和p[j]代替 (p+i)和(p+j)。

下一篇 指针9(指针与字符串)

  • 3
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值