现在的位置: 首页 > 综合 > 正文

第九章 函数与模块

2013年08月26日 ⁄ 综合 ⁄ 共 1346字 ⁄ 字号 评论关闭
文章目录
    大家都知道C语言是一种面向过程的语言,它的特点就是对步骤和过程的细节操作。当面临编写大型的程序时,代码量是会很多的。都是细节的话,很不容易抓住重点的,程序可读性和维护性都很低。为了克服这个缺点,有了模块化的编程思想。
    把能够实现特定功能的代码块包装起来,放到函数里面;需要使用的时候,直接整体调用。
    这样每次使用的时候直接调用函数,就可以实现模块思想,同时还能重复使用以前的代码,及简化编程的难度。

一、函数的定义

    函数可以放在任何位置,在前面使用需要先声明:形式如下
返回值类型  函数名(形参类型1 形参名1,形参类型1 形参名1,……);
    定义如下
返回值类型  函数名(形参类型1 形参名1,形参类型1 形参名1,……)
{
  语句;
  return 返回值;
}

二、函数的使用

    使用函数时直接调用,如果在另外一个文件中,需要导入那个文件。调用函数时,会生成相应的临时形参变量,把实参的值传递给形参,形参参与运算,函数结束时,返回值;之后临时的形参变量释放。通过指针的地址传递可以对原来的实参进行操作。
   函数名(实参1,实参2);

#include<stdio.h>
//如果本文件没有保存,没有文件名,则编译错误,找不到导入的文件reover.cpp 
#include "reover.cpp"
main()
{
	int a[100],i=0,t;
	printf("请输入数组中整数:0结束\n");
	do{
		scanf("%d",a+i++); 
	}while(a[i-1]);
	reover(a,i-1);
	for(t=0;t<i-1;t++)
		printf("%d\n",a[t]);
}

void reover(int * p,int n)
{
	int i,k=n/2,t=0;
	for(i=0;i<k;i++)
		{
			t=p[i];
			p[i]=p[n-1-i];
			p[n-1-i]=t;
		}	
}
 
#include<stdio.h>
//返回字符串p的长度 
int strlen(char *p)
{
	int i;
	for(i=0;p[i];i++);
	return i;
}
//相等返回0,不相等但是长度一样返回-2
//p1长度大于p2返回1,p1长度小于p2返回-1 
int strcmp(char *p1,char *p2)
{
	int i,k,t;
	k=strlen(p1);
	t=strlen(p2);
	if(k==t)
	{
		for(i=0;p1[i]==p2[i];i++)
			if(!p1[i])
				return 0;
		return -2;
	}
	else if(k<t)
		return -1;
	else
		return 1;
}
//p2全部拷贝到P1;返回字符串p1 
char * strcpy(char *p1,char *p2)
{
	int i;
	for(i=0;p1[i]=p2[i],p2[i];i++);
	return p1;
}
main()
{
	int k;
	char c[4];
	printf("\nc=%s\n",c);
	char a[]="abcdjr";
	char b[]="abc";
	k=strcmp(c,b);
	printf("%d\n",k);
	printf("\na=%s\n",a);
	printf("\nb=%s\n",b);
	strcpy(c,b);
	printf("\nb->c=%s\n",c);
	strcpy(c,a);
	printf("\na->c=%s\n",c);	
}

抱歉!评论已关闭.