广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言基础函数用法示例详细解析
  • 844
分享到

C语言基础函数用法示例详细解析

2024-04-02 19:04:59 844人浏览 薄情痞子
摘要

目录函数函数定义函数一般格式C语言函数分类库函数库函数的分类库函数的学习自定义函数函数的参数实际参数形式参数函数的调用传值调用传址调用无参函数调用函数的声明和定义函数的声明函数的定义

函数

函数定义

百度百科对函数的定义:子程序

在计算机科学中,子程序是一个大型程序中的某部分代码,有一个或者多个语句块组成,它负责完成某项特定的任务,而且相比于其他的代码,具备相对的独立性。

一般来说会有输入参数和返回值,提供对过程的封装和细节的隐藏,这些代码通常被集成为软件库。

函数一般格式

这里是引用

C语言函数分类

库函数

为了支持可移植性和提高程序的效率,所以C语言的基础库提供了一系列库函数,库函数是对实现某种特定功能的代码的封装,当用户需要实现这种功能时,只需要调用此库函数即可,方便程序员进行软件开发

库函数的分类

常用的库函数可简单的分为:io函数,字符串操作函数,字符操作函数,内存操作函数,时间/日期函数,数学函数等等。

库函数的学习

这里我们主要提供两个网站提供用户学习库函数。
(Http://www.cplusplus.com)
(http://en.cppreference.com)

自定义函数

自定义函数是程序员根据所要完成的功能,自己写出的源代码实现该功能。
自定义函数和库函数一样,具有函数名,返回值类型,和函数参数。

代码示例1:写一个函数找出两整数的最大值。


int get_max(int x, int y)
{
	return (x > y ? x : y);
}
int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	int MAX = get_max(a, b);
	printf("MAX = %d\n", MAX);
	return 0;
}
10 20
MAX = 20
请按任意键继续. . .

代码示例2:写一个自定义函数交换两整型内容


void swap(int * x, int * y)
{
	int temp = *x;
	*x = *y;
	*y = temp;
}
int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	printf("交换前:a = %d b = %d\n", a, b);
	swap(&a, &b);
	printf("交换后:a = %d b = %d\n", a, b);
	return 0;
}
10 20
交换前:a = 10 b = 20
交换后:a = 20 b = 10
请按任意键继续. . .

函数的参数

实际参数

实际传递给函数的参数,可以是变量,常量,表达式,函数,无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值,以便把这些值传送给形参。

形式参数

形式参数是指被调函数的函数名后括号里的变量,形参变量只有被调用时才分配内存空间储存,在未出调用该函数时,它们并不占内存中的存储单元,因此被称为形式参数或虚拟参数。且函数调用完成之后就即时的自动销毁,因此形参只在被调函数内有效。
形参与实参的联系:当函数调用时,实参传递给形参,形参是实参的一份临时拷贝,所以对形参的修改不会影响实参。
实参单元与形参单元是不同的单元。调用结束后,形参单元被释放,函数调用结束返回主调函数后则不能再使用该形参变量。实参单元仍保留并维持原值。因此,在执行一个被调用函数时,形参的值如果发生改变,并不会改变主调函数中实参的值。

函数的调用

定义函数后,我们需要调用此函数才能执行到这个函数里的代码段。这和main()函数不一样,main()为编译器设定好自动调用的主函数,无需人为调用,我们都是在main()函数里调用别的函数,一个 C 程序里有且只有一个main()函数。

传值调用

函数的形参和实参分别占用不同的内存空间,且形参随着被调函数的结束而即时的销毁,所以对形参的修改不会影响实参。
代码举例:


void swap(int  x, int  y)
{
	int temp = x;
	x = y;
	y = temp;
}
int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	printf("交换前:a = %d b = %d\n", a, b);
	swap(a, b);
	printf("交换后:a = %d b = %d\n", a, b);
	return 0;
}
10 20
交换前:a = 10 b = 20
交换后:a = 10 b = 20
请按任意键继续. . .

传址调用

传址调用,顾名思义就是把地址传递给被调函数,(实参与形参”不同级别“)。
代码示例:


void swap(int * x, int * y)
{
	int temp = *x;
	*x = *y;
	*y = temp;
}
int main()
{
	int a, b;
	scanf("%d%d", &a, &b);
	printf("交换前:a = %d b = %d\n", a, b);
	swap(&a, &b);
	printf("交换后:a = %d b = %d\n", a, b);
	return 0;
}
10 20
交换前:a = 10 b = 20
交换后:a = 20 b = 10
请按任意键继续. . .

无参函数调用

如果是调用无参函数,则不能加上“实参”,但括号不能省略。


void test()
{
}
int main()
{
	// 函数的调用
	test();	// right, 圆括号()不能省略
	test(250); // error, 函数定义时没有参数
return 0;
}

函数的声明和定义

函数的声明

所谓函数声明,就是告诉编译器将有一个或者已经有一个对应的函数,参数是什么,返回类型是什么,但是具体存不存在,编译器不确定。

函数的声明一般是出现在函数使用之前,先声明,后使用。主要运用于多文件编程时,一般放在头文件中。

函数的定义

函数的定义是指具体实现某种功能的代码解释。


#include <stdio.h>
int get_max(int x, int y); // 函数的声明,分号不能省略
// int get_max(int, int); // 另一种方式
int main()
{
	int a = 10, b = 25, MAX = 0;
	MAX = get_max(a, b); // 函数的调用
	printf("MAX = %d\n", MAX);
	return 0;
}
// 函数的定义
int max(int x, int y)
{
	return x > y ? x : y;
}

函数声明与定义的区别

定义是指对函数功能的实现,包括指定函数名、函数类型、形参及其类型、函数体等,它是一个完整的、独立的函数单位。

声明的作用则是把函数的名字、函数类型以及形参的个数、类型和顺序(注意,不包括函数体)通知编译系统,以便在对包含函数调用的语句进行编译时,据此对其进行对照检查(例如函数名是否正确,实参与形参的类型和个数是否一致)。

exit与return介绍

这里我们简单介绍一下return与exit的区别与联系:

联系:在main函数中,exit和return的作用是一致的。
区别:在子函数中调用return只是代表子函数终止了,在子函数中调用exit,那么程序终止。

OK!!!观众老爷们,这里只是介绍了函数的入门知识,如果朋友们觉得有一点点作用的话,希望朋友们能够给予小菜鸟一点支持!后续继续给朋友们带来更好的博文,还希望朋友们能够继续关注,小菜鸟致力于把自己的学习经验与个人理解更多的分享给大家,望大家喜欢与指正,希望大家以后多多支持编程网!

--结束END--

本文标题: C语言基础函数用法示例详细解析

本文链接: https://www.lsjlt.com/news/157738.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言基础函数用法示例详细解析
    目录函数函数定义函数一般格式C语言函数分类库函数库函数的分类库函数的学习自定义函数函数的参数实际参数形式参数函数的调用传值调用传址调用无参函数调用函数的声明和定义函数的声明函数的定义...
    99+
    2022-11-12
  • Go语言基础函数基本用法及示例详解
    目录概述语法函数定义一.函数参数无参数无返回有参数有返回函数值传递函数引用传递可变参数列表 无默认参数函数作为参数二、返回值多个返回值跳过返回值匿名函数匿名函数可以赋值给一个变量为函...
    99+
    2022-11-12
  • C语言map函数的基础用法详解
    目录mapmap具体操作总结map 有N个学生的姓名name和学号ID,要求给你一个学生的name求查找他的ID。 简单做法是定义 string name [ N ] 和 int I...
    99+
    2022-11-12
  • Go语言基础数组用法及示例详解
    目录概述语法注意示例 概述 固定长度,数组声明后长度便不能再修改 只能存储一种特定类型元素的序列 语法 编号...
    99+
    2022-11-12
  • C语言函数调用基础应用详解
    所谓函数调用(Function Call),就是使用已经定义好的函数。函数调用的一般形式为: functionName(param1, param2, param3 ...); fu...
    99+
    2023-02-11
    C语言函数调用方式 C语言函数调用事例
  • Go语言基础map用法及示例详解
    目录概述语法声明和初始化读取删除遍历总结示例 概述 map是基于key-value键值对的无序的集合 Go语言中的map是引用类型 必须初始化才能使用。 ...
    99+
    2022-11-12
  • Go语言基础go接口用法示例详解
    目录概述语法定义接口实现接口空接口接口的组合总结 概述 Go 语言中的接口就是方法签名的集合,接口只有声明,没有实现,不包含变量。 语法 定义接口 type [接口名] inte...
    99+
    2022-11-12
  • C语言超详细解析函数栈帧
    目录一、前面二、预备知识三、栈帧创建与销毁四、总结一、前面 本章将以汇编视角看函数栈帧的内存是如何使用与回收的,为了降低汇编语言的理解成本,以图示的方式讲解每一步汇编指令所带来的效果...
    99+
    2022-11-13
  • C语言函数基础教程分类自定义参数及调用示例详解
    目录1.  函数是什么?2.  C语言中函数的分类2.1 库函数2.1.1 为什么要有库函数2.1.2 什么是库函数2.1.3 主函数只能是main()吗2.1.4常见的库函数2.2...
    99+
    2022-11-12
  • Go语言基础结构体用法及示例详解
    目录概述语法结构体定义的三种形式第一种【基本的实例化】第二种【指针类型的结构体】第三种【取结构体的地址实例化,通过&的操作】初始化结构体键值对初始化结构体值列表填充结构体匿名...
    99+
    2022-11-12
  • Go语言基础枚举的用法及示例详解
    目录概述一、普通枚举二、自增枚举注意代码 概述 将变量的值一一列举出来,变量只限于列举出来的值的范围内取值 Go语言中没有枚举这种数据类型的,但是可以使用const配合iota模式来...
    99+
    2022-11-12
  • Go语言基础switch条件语句基本用法及示例详解
    目录概述语法第一种【switch 带上表达式】第二种【switch 不带表达式】第三种【switch 初始化,表达式】注意示例一【根据今天的日期打印今天星期几】示例二【根据分数打印A...
    99+
    2022-11-12
  • Go语言基础if条件语句用法及示例详解
    目录概述语法格式规则 概述 条件语句需要开发者通过指定一个或多个条件 并通过测试条件是否为 true 来决定是否执行指定语句 并在条件为 false 的情况再执行另外的语句。 语法 ...
    99+
    2022-11-12
  • C语言函数声明以及函数原型超详细讲解示例
    C语言代码由上到下依次执行,原则上函数定义要出现在函数调用之前,否则就会报错。但在实际开发中,经常会在函数定义之前使用它们,这个时候就需要提前声明。 所谓声明(Declaration...
    99+
    2023-02-11
    C语言函数声明 C语言函数原型 C语言函数声明与函数原型
  • C语言中extern详细用法解析
    在C语言中,修饰符extern用在变量或者函数的声明前,用来说明“此变量/函数是在别处定义的,要在此处引用”。  1. extern修饰变量的声明。  举例来...
    99+
    2022-11-12
  • Go语言基础类型及常量用法示例详解
    目录基础类型概述按类别有以下几种数据类型数值类型派生类型变量概述单个变量声明多个变量声明基础类型 概述 在 Go 编程语言中,数据类型用于声明函数和变量。数据类型的出现时为了把数据...
    99+
    2022-11-12
  • Go语言基础go build命令用法及示例详解
    目录go build一个Go项目在GOPATH下,会有如下三个目录 使用:注意: go build 1. 用于测试编译多个包或一个main包 2. build命令编译包丢弃非main...
    99+
    2022-11-12
  • Go语言基础go doc命令用法及示例详解
    目录go doc一、使用go doc命令在终端查看go doc packagego doc package/subpackagego doc package function二、使用...
    99+
    2022-11-12
  • Go语言基础闭包的原理分析示例详解
    目录一. 闭包概述二. 代码演示运行结果代码说明一. 闭包概述 闭包就是解决局部变量不能被外部访问的一种解决方案 闭包是把函数当作返回值的一种应用 二. 代码演示...
    99+
    2022-11-12
  • Go语言基础for循环语句的用法及示例详解
    目录概述语法注意示例一  死循环,读取文件示例二  打印乘法表示例三  遍历字符串,数组,map 概述 for循环是一个循环控制结构,可以执行指定次数的...
    99+
    2022-11-12
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作