函数的理解

来源:互联网 发布:厦门网游网络 编辑:程序博客网 时间:2024/06/02 01:27

一、函数的调用与返回值

1、函数调用的形式

函数名(实参列表);

max(a,b);

2、函数调用的方式

(1)、语句调用(不要求函数有明确的返回值)

(2)、表达式调用(有明确的返回值)

3、函数的返回值

(1)、·可以有多条返回语句,但每条语句的返回值只有一个,如不需要指明返回值可写成return;

二、函数的参数

1、理解形参和实参

函数名后括号内说明的变量是形参

在被调用处给出对应的参数,这些参数是实参,可以是常量,变量和表达式。

2、数组作为函数参数

/*二维数组名作为函数参数*/
#include"stdio.h"
max(int b[][4])
{
int i,j,k,max1;
max1=b[0][0];
for(i=0;i<3;i++)
for(j=0;j<4;j++)
if(b[i][j]>max1)
max1=b[i][j];
return(max1);
}
void main()
{
int m,a[3][4]={5,16,30,40,23,4,156,8,1,3,50,37};
m=max(a);
printf("max=%d\n",m);
}

3、函数声明和函数原型

4、函数的嵌套调用

5、函数的递归调用

(1)、/*利用递归算法求Fibonacci数列*/
#include"stdio.h"
long f(int n)
{
long s;
if(n==1||n==2)
return 1;
s=f(n-1)+f(n-2);
return s;
}
void main()
{
int n;
printf("input n:");
scanf("%d",&n);
if(n<0)
printf("error!\n");
else
printf("第%d项Fibonacci数列的值为%ld\n",n,f(n));
}

(2)、 /*汉诺塔问题*/
void hanoi(int n,char x,char y,char z)
{
if(n==1)
printf("%c->%c\n",x,z);
else
{
hanoi(n-1,x,z,y);
printf("%c->%c\n",x,z);
hanoi(n-1,y,x,z);
}
}
void main()
{
int m;
printf("input number:");
scanf("%d",&m);
printf("移动的过程为:\n");
hanoi(m,'A','B','C');
}

6、变量的作用域

(1)、局部变量

(2)、全局变量

7、变量的存储方式

(1)、静态存储(在编译时就分配了空间)

(2)、动态存储(在程序运行过程才分配空间)

【1】、静态局部变量

static  数据类型说明符变量名;

(程序运行过程不在进行初始化)

【2】、自动变量

auto  数据类型说明符变量名;

auto int a;等价于int a;

【3】、寄存器变量

regiater  数据类型说明符变量名;(用于提高程序的执行效率)

【4】、外部变量声明语句

extern  数据类型说明符变量名;

三、内外部函数

1、内部函数

static  类型说明符函数名(形参表)

例:static int f(int a,int b);

2、外部函数

四、指针与函数

/*实现系统提供的字符串连接函数strcat(s1,s2)的全部功能*/

char *mystrcat(char *s1,char *s2)
{
char *p=s1;
while(*s1) 
s1++;
while(*s1++=*s2++);
return(p);
}
void main()
{
char s[40]="Hello, ";
printf("%s\n",mystrcat(s,"Welcome to you!"));
}

0 0
原创粉丝点击