C学习笔记6--函数

1、库函数

库函数是C语言中自带的函数

可以通过https://cplusplus.com/reference/查询和学习库函数.

库函数都要有对应的头文件才能使用

常用的库函数有

IO函数----printf        scanf        getchar        putchar

printf 可以输出一个任意的字符串

scanf 从缓存区读取不包含空格的字符串

getchar 取用户输入缓存区的一个字符,包括回车,常用于清空缓存区

putchar 输出一个字符

字符串操作函数----strcpt        strlen

strcpt(arr1,arr2) 将数组arr2中的内容放入arr1

字符操作函数----toupper

内存操作函数----memcpy        memcpy        memset

memset(viod*pdr,int value,size-t num) 内存设置    将数组的前size-t个字符设置为value

时间/日期操作函数----time

数学函数----sprt pow

其他函数

2、自定义函数

自定义函数是为了满足程序员个性化的函数需求

自定义函数和库函数一样有函数名,返回值类型和函数参数,但这些都是我们自己设计的.

示例

int JIA(int x, int y)
{
	int z = x + y;
	return z;
}
int main()
{
	int a = 5;
	int b = 6;
	int sum = JIA(a, b);
	printf("%d\n", sum);
	return 0;
}
返回值为11

在主函数中将a,b传入函数JIA中,经过运算后返回结果存入sum

函数的组成

ret_type  函数返回类型(函数的返回类型填 void 表示不返回函数)

fun_name 函数名

para1,*   函数参数

函数的参数

实际参数(实参)

真实传给函数的参数叫实参,实参可以是常量,变量,表达式,函数。但不管实参为何等形式,在进行函数调用时,都必须有一个确定的值,以便将值传递给形参。

形式参数(形参)

函数名后面括号中的变量是形参,形参只有在函数被调用时才会示例化(分配内存单元)。

形参在函数调用完成后自动销毁,只在函数内有效。

我们可以通过指针将形参转化为实参

void swep(int* pa, int* pb)
{
	int c;
	c = *pa;
	*pa = *pb;
	*pb = c;
}
int main()
{
	int a = 10, b = 30;
	printf("交换前:a=%d b=%d\n", a, b);
	swep(&a, &b);
	printf("交换后:a=%d b=%d\n", a, b);
	return 0;
}

函数的调用

函数的调用包括两种形式:传值调用和传址调用

传值调用

函数的形参和实参占用不同的内存,对形参的修改不会影响实参。

传址调用

将函数外部变量的地址传递给形参,将函数与函数外部的变量建立练习,使在函数内也可以操作函数外的变量。

函数递归

递归的思想是把一个大型复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解

递归的两个必要条件
1.存在限制条件,当满足这个限制条件的时候,递归便不再继续
2.每次递归调用之后越来越接近这个限制条件。

void print (int a)
{
	int b = a % 10;
	if (a > 9)
	{
		print(a / 10);
	}
	printf("%d  ", b);
}
void main()
{
	int num;
	scanf("%d", &num);
	print(num);
}

输入一串数,分别输出这一串数的每个字符
int my_strlen(char* arr)
{
	if (*arr == '\0')
		return 0;
	else
	{
		return 1 + my_strlen(arr + 1);
	}
}
void main()
{
	char haha[] = "haha";
	printf("%d", my_strlen(haha));
}

不创建临时变量,计算字符串的长度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值