C语言学习笔记-函数

发布时间:2024年01月21日

1.函数的概念:

**

函数,有些翻译成子程序。

c语言中的函数就是完成某项特定任务的**一小段代码**。同时,一个函数如果能完成某项特定任务的话,这个函数是可以复用的。提升了软件开发的效率。

在c语言中,我们一般会见到两类函数。

(1)库函数------现成的函数,可以直接使用。

(2)自定义函数----自己定义的函数

**

2. 库函数

**

2.1标准库和头文件

标准库: 约定了常用函数的标准。

printf: 不去实现,只规定标准。

功能:在屏幕上打印信息

参数:xxxxxx

返回值:xxxxx

 2.2库函数的使用方法

sqrt:计算平方根--------要包含头文件 <math.h>

double r=sqrt(16.00000);
printf("%lf",r);

在这里插入图片描述

**

3. 自定义函数

**

3.1函数的语法形式
ret_type  fun_name(形式参数){
函数体
}

ret_type:是函数返回类型

fun_name:是函数名

函数返回类型有两类:● void-表示什么都不返回

			 ●其他  int char short ...

3.2函数的举例:

写一个加法函数,完成2个整型变量的加法操作。

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int Add(int x, int y)//形式上的参数  简称形参。
{
	int z = 0;
	z = x + y;                                     return  x+y;
	return z;
}
int main() {
int a = 0;
	int b = 0;
	scanf("%d %d", &a, &b);
	int c = Add(a, b); //a和b是真实传递给Add的参数,是实际参数,简称实参。
	printf("%d", c);
		return 0;
	}

**

4. 实参和形参

**

实参:真正传递给函数的参数 形参:只有在函数被调用的过程中为了存放实参传递过来的值,才向内存申请空间,这个过程叫形参的实例化。

我们可以理解为形参是实参的一份临时拷贝。

**

5. return语句

**

●return后边可以是一个值也可以是一个表达式。

●return后边也可以什么都没有,直接写return;这种写法适合函数返回类型是void的情况。(可以结束这个函数)---不能用break;(是循环)

●return返回的值和函数返回类型不一样,系统会自动将返回的值隐式转换为函数的返回类型。

●如果函数存在if等分支的语句,则要保证每种情况下都有return返回,否则会出现编译错误。

**

6. 数组做函数参数

**

●形参与实参的个数要匹配。

●函数实参是数组,形参也可以是数组。

●形参如果是一维数组,数组大小可以省略不写。

●形参如果是二维数组,行可以省略,列不能省略。

写一个函数对整型数组,里的内容全部设置成-1.
#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
void set_arr(int arr[], int sz) {
	int i = 0;
	for (i = 0; i < sz; i++) {
		arr[i] = -1;
	}
}
void printf_arr(int arr[], int sz) {
	int i = 0;
	for (i = 0; i < sz; i++) {
		printf("%d", arr[i]);
	}
}
int main() {
int arr[] = {1,2,3,4,5,6,7,8,9,10};
	//先写一个函数,将arr内的元素全设置成-1
	int sz = sizeof(arr) / sizeof(arr[0]);
	set_arr(arr, sz);
	printf_arr(arr, sz);
		return 0;
	}

在这里插入图片描述

二维数组的传参:在这里插入图片描述

**

7. 嵌套调用和链式访问

**

假设计算某年某月有多少天?

is_leap_year():根据年份确定是否是闰年

get_days_of_month():确定是否是闰年后,再根据月计算这个月的天数

#define _CRT_SECURE_NO_WARNINGS 1
#include<stdio.h>
#include<math.h>
int is_leap_year(int y) {
	if ((y % 4 == 0 && y % 100 != 0) || (y % 400 == 0))
		return 1;
	else
		return 0;
}
int get_days_of_month(int y,int m) {
	int days[13] = { 0,31,28,31,30,31,30,31,31,30,31,30,31 };
	int d = days[m];
	if (is_leap_year(y) && m == 2) {
		d += 1;
	}
	return d;
}
int main() {
int y = 0;
	int m = 0;
	scanf("%d %d", &y, &m);
int d=	get_days_of_month(y,m);
printf("%d\n", d);
		return 0;
	}

在这里插入图片描述

链式访问:将一个函数的返回值作为另外一个函数的参数,像链条一样将函数串起来就是函数的链式访问。

在这里插入图片描述

可以写成 :printf("%zd", strlen("abc"));

例题:

printf(“%d”,printf(“”%d),printf(“%d”,43^(打印字符: 2个字符)^));

文章来源:https://blog.csdn.net/2401_82617188/article/details/135724047
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。