函数分为库函数和自定义函数;
库函数:
系统本身自带的,可以直接使用的函数,如scanf,printf函数
常见的库函数:
strcpy——string copy(字符串拷贝)
char * strcpy(char* destination,const char* source)
用法如下:
#include<stdio.h>
#include<string.h>
int main()
{
char arr1[]="nytd";
char arr2[]="***********";
strcpy(arr2,arr1);
printf("%s\n",arr2);
return 0;
}
此代码运行结果为:nytd
将arr1数组的内容拷贝到arr2数组中,所以打印出arr2时,arr2的内容为nytd
需要注意点是,拷贝字符串时,字符串的结束标识符'\0'也拷贝。
另外,在调用strcpy函数时,需引头文件#include<string.h>
memset:memoryset(内存设置)
void * memset ( void * ptr, int value, size_t num );
意为将ptr之前的num个数据改成value
下面给出具体实例:
#include <stdio.h>
#include <string.h>
int main ()
{
char str[] = "almost every programmer should know memset!";
memset (str,'-',6);
puts (str);
return 0;
}
因为数组str的前六个元素被替换为-
所以运行结果为:------ every programmer should know memset!
库函数的学习建议到www.cplusplus.com
这里不给过多介绍。
自定义函数:
ret_type fun_name(para1,*)
{
语句项
}
自定义函数中,我们学过两个数字求和,这里给出实例:
#include <stdio.h>
#include <string.h>
int Add(int x,int y)
{
int z=0;
z=x+y;
return z;
}
int main ()
{
int i=20;
int j=20;
int sum=0;
sum=Add(i,j);
printf("%d\n",sum);
return 0;
}
Add为自定义的函数,因此在main函数中可以直接引用Add函数;
参数:
参数分为实参和形参;
实参:真实传递给函数的参数们可以使常量,变量,表达式,函数。
形参:函数名后括号里的内容。
如:
int Add(int x,int y)
{
int z=0;
z=x+y;
return z;
}
这里的x和y是形参,并不是实际存在的,也可以是ad,pq,诸如此类。形参并不会影响main函数中Add函数的使用。
而
int main ()
{
int i=20;
int j=20;
int sum=0;
sum=Add(i,j);
printf("%d\n",sum);
return 0;
}
这里的i和j是实参,有实际存在的意义。
形参其实是实参的一份临时拷贝。
对形参的修改不会改变实参。
函数需要先声明后使用。
递归:程序调用自身
主要思想:大事化小。
实例:
#include <stdio.h>
#include <string.h>
int Fib(int n)
{
if(n<1)
return 1;
else
return n*Fib(n-1);
}
int main ()
{
int i=5;
int x=Fib(i);
printf("%d\n",x);
return 0;
}
自定义函数中,Fib函数实现了对自身的调用。
此代码运行结果为120,5*4*3*2*1=120
递归的两个必要条件:
1、存在限制条件,当满足限制条件时,递归停止。
2、每次递归调用之后越来越接近限制条件。
3、迭代和循环可以替代递归,其效率更高。