C语言之函数

本文详细介绍了C语言中的库函数和自定义函数。库函数如strcpy和memset,分别用于字符串拷贝和内存设置。自定义函数如Add,用于实现两个数的相加。此外,还讲解了递归的概念,通过Fibonacci函数展示了如何用递归解决问题。文章强调了参数实参和形参的区别,并提到递归必须满足的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

函数分为库函数和自定义函数;

库函数:

系统本身自带的,可以直接使用的函数,如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、迭代和循环可以替代递归,其效率更高。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值