创建通用的一维数组处理函数

学会用函数编程是开发大型程序的第一步。

合理使用函数,会使得程序的逻辑更加清楚,更加容易维护。

一维数组的用途非常广,对其操作也非常多,能够合理的将基本操作封装成函数,无疑是大有裨益的。

本篇我们讨论如何用C语言写通用的一维数组处理函数。

一、什么是通用的一维数组处理函数

这里是指,对于同一种类型,无论其大小是多少,都可以处理。

二、不通用的几种形式

1、函数参数或者函数体中存在常数

#include<stdio.h>
void func(int a[3])
{
	int i;	
	for(i=0;i<3;i++) 
	{
		printf("%d ",a[i]);
	}

}
//
int main(void)
{
	int a[]={1,2,3};
	func(a);
	return 0;
}

代码 for(i=0;i<3;i++)  把数组的数据个数限定得死死的。如果数组大小不为3,则该函数输出结果是错误的。

2、即使用#define 语句也不方便

#include<stdio.h>
#define N 3
void func(int a[N])
{
	int i;	
	for(i=0;i<N;i++) 
	{
		printf("%d ",a[i]);
	}

}
//
int main(void)
{
	int a[]={1,2,3};
	func(a);
	return 0;
}

虽然有了#define语句,但是使得函数void func(int a[N])对其产生了依赖,从而破坏了函数的封装性。

三、通用的方式

#include<stdio.h>
void func(int *begin,int *end)
{//数据范围是[begin,end) 
		
	for(;begin<end;begin++) 
	{
		printf("%d ",*begin);
	}

}
//
int main(void)
{
	int a[]={1,2,3};
	func(a,a+sizeof(a)/sizeof(int));
	return 0;
}

一维数组在内存中是连续存放的,因此函数参数采用起始地址和结束地址下一个位置两个指针。

这样限定了范围,设计函数时就无需考虑数组大小问题。该问题由函数调用者负责处理。

因此具有通用性。

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值