C语言之自定义函数的实现

2023-11-15

自定义函数的作用:
  1. 方便管理代码,编写程序时思路清晰。
  2. 代码复用,同一段代码可以在不同位置多次执行。
函数声明:

使用:返回值类型 函数名(类型 变量名,类型 变量名,…);
例如:int sum(int num1, int num2);
实际上,在函数声明时,变量的名称并不重要,只有返回值类型,函数名和变量的类型是编译器必须要知道的,因此变量名称是可以忽略的。下面的声明也是正确的:int sum(int , int);

注意

  1. c语言一般根据函数的功能来取函数名,全部使用小写单词,多个单词之间用下划线分隔,如:add_to_arr。
  2. 参数的个数、类型由函数的功能决定,被调用时由调用者提供。如果函数不需要任何参数则写void,不要空着
  3. 返回值类型根据函数的结果决定,如果不需要返回值则写void。
  4. 如果函数的定义出现在调用之前,声明可以省略。
  5. 函数声明时,参数的变量名可以省略。
  6. 如果不写返回值类型(会有警告),则默认为int类型返回值。
函数定义:

使用
返回值类型 函数名(类型 变量名,类型 变量名,…)
{
函数体;
return (数据);
}
例如:

int sum(int a, int b)
{
	return a + b;
}
函数的调用:

使用:函数(数据1,数据2…);
例如:sum(1, 2);
返回值会在函数执行完成后放置在调用位置,处理方式:

  1. 存储到变量中,长期使用。
  2. 立即使用,可以显示或参与运算。

函数之间参数的传递(值传递):

  • 调用者向被调用者传递,由实参向形参传递。
    1. 不同函数的命名空间都是相互独立的,函数之间变量名可以重名,互不影响。同一函数中,不能定义相同名字的变量,但是同一个程序中全局变量名和函数中的局部变量名可以同名,但是此函数中暂不能引用同名全局变量。

    2. 函数在调用时,被调函数会为形参开辟新的内存空间,主函数中的实参会赋值给这个空间,形参是好比实参的一个副本。因此,在被调函数中,形参值的任何改变都不会影响实参值。在被调函数结束时,这段空间就会被回收,形参数据不复存在,而实参还是调用前的实参。

    3. 函数之间不能通过值传递来共享变量。

      注意: 数组当作函数的参数时(在函数调用时的传递的数组会变成指针类型,此时就是引用传递了),长度会丢失,需要额外添加一个参数来传递它的长度。

#include <stdio.h>
void func(int arr[])		//其中,等价于 int* arr
{
	for(int i=0; i<sizeof(arr)/sizeof(arr[0]); i++)
		printf("%d\n",arr[i]);			//运行结束后,只输出一个 1
}

int main()
{
	int arr[5] = {1,2,3,4,5};
	func(arr);
}

  • 被调用者向调用者传递,使用return返回数据。
    1. 不写return语句也会有返回值。
    2. 调用者和被调用者会在内存中约定一个空间用于存储返回值,return语句的功能之一就是把一个数据存储到这个空间。如果不写return语句,调用者就会得到一个默认值(不确定)。
#include <stdio.h>
int func(void)
{
	int arr[20] = {};		//如果注释此行,输出为1,不注释,输出为0。
}

int main()
{
	int num = 9999;
	num = func();
	printf("%d\n",num);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C语言之自定义函数的实现 的相关文章

  • 【C语言】qsort函数的使用和模拟实现

    本篇文章我们来了解一下回C语言中qsort函数的使用方法和模拟实现 这是一个通用性很强而且非常方便的库函数 通过这篇文章希望能让你了解sort函数 目录 一 qsort的介绍 二 qsort函数的使用 1 qsort排序整形 2 qsort
  • C语言基础:数据类型(一)

    C语言基础 数据类型 一 C语言是计算机中很多现代编程语言的开山鼻祖 它创造了信息时代和科技时代的文明 计算机语言由机器语言慢慢演变为高级语言 1958年7月3日 ALGOL语言 Algorithmic Language 创立 C语言的原型
  • c语言负数翻转问题

    1 在项目中 我们经常会用到变量 那么在变量的定义和传递过程中 经常会出现负数的翻转问题 int test funtion return 1 void poll fun unsigned int a while a gt 250 print
  • day2作业

    1 列举出3种常见的操作系统 答 操作系统 windows ubuntu MacOS 其内核 windowsNT Linux uniux 2 简述Ubuntu和Linux的关系 答 Ubuntu 乌班图 是一个以桌面应用为主的Linux操作
  • C基础day3(2023.7.3)

    一 Xmind整理 二 作业 1 include
  • 【Visual Studio 2019】 实用调试技巧,学会了都说好

    文章目录 前言 一 bug是什么 二 调试是什么 三 调试的基本步骤 四 Debug和Release的介绍 五 windows环境调试介绍 1 调试环境的准备 2 常用快捷键 六 调试的时候查看程序当前信息 1 调试实例 七 如何写出好 易
  • C++语言基础--递归函数

    对于很多编程初学者来说 递归算法是学习语言的最大障碍之一 可能也有一大部分人知道递归 也能看的懂递归 但在实际做题过程中 却不知道怎么使用 递归的定义 1 很官方的说法 递归 在数学与计算机科学中 是指在函数的定义中使用函数自身的方法 也就
  • 多文件编辑作业(2023.1.10)

    第一题 main c include head h int main int argc const char argv char str hello my student int start 0 int end strlen str 1 M
  • “~i“在C语言的for循环中是什么意思

    最近看y总的视频 在他的代码里经常出现 1 比如 for int i h u i i ne i dfs e i depth 1 然后我就不解了 去百度了一通 百度说 在C语言里面是二进制取反的意思 我还是有点不解 然后自己写代码测试了一下
  • 结构体对齐计算方式

    目录 法则一 结构体成员的偏移量必须是成员大小的整数倍 数组除外 法则二 结构体大小必须是所有成员大小的整数倍 数组 结构体除外 带数组的结构体大小计算 带结构体的结构体大小计算 带联合体的结构体大小计算 pragma pack 4 向4对
  • 函数作业(2023.1.4)

    函数作业 1 计算数组中完数的个数 完数 除本身约数和等于本身 例如6 1 23 1 2 3 6 例如28 1 2 4 7 14 28 在该函数 void PerfectFun int arr int n 循环数组每一个值 在该函数 int
  • # 和 ## 的区别

    参考 和 的区别 作者 枕上 发布时间 2021 07 25 08 23 40 网址 https blog csdn net jinchi boke article details 119076280 utm source app app
  • 每日一题(C语言基础篇)3

    题目描述 求一个整数中2进制为1的个数 例如 8 00001000 有一个二进制为1的数 9999 270F 有8个2进制为1的数 代码实现 include
  • C语言之tentative definition

    参考链接 What Are Tentative Symbols
  • C语言之进制转换

    文章目录 一 基础知识 1 C语言中的进制 2 汇编中的进制 3 常见进制的基数 4 不同进制的输出方式 二 十进制转为其它进制 三 任意进制转为十进制 四 二进制与十六进制的互相转换 1 二进制转为十六进制 2 十六进制转为二进制 五 二
  • C语言之自定义函数的实现

    自定义函数的作用 方便管理代码 编写程序时思路清晰 代码复用 同一段代码可以在不同位置多次执行 函数声明 使用 返回值类型 函数名 类型 变量名 类型 变量名 例如 int sum int num1 int num2 实际上 在函数声明时
  • 编写一个程序,求出满足下列条件的四位数:该数是个完全平方数,且第一、三位数字之和为10,第二、四位数字之积为12

    编写一个程序 求出满足下列条件的四位数 该数是个完全平方数 且第一 三位数字之和为10 第二 四位数字之积为12 include stdio h include math h int main int number int one ten
  • c语言基础回顾 —— 其他知识点

    参考 c语言基础回顾 其他知识点 作者 丶PURSUING 发布时间 2021 03 11 14 48 59 网址 https blog csdn net weixin 44742824 article details 114666007
  • day3作业

    在家目录下创建目录名为 shuren ubuntu ubuntu mkdir shuren 在shuren目录下创建d1 d2 d3 注意d2在d1目录下 d3在d2目录下 ubuntu ubuntu mkdir shuren d1 d2
  • C语言之指针知识大总结

    文章目录 一 地址 二 指针与指针变量 三 指针的作用 四 初学指针时常见的错误 五 通过调用函数修改主调函数中的值 六 指针与一维数组 七 使用函数操作一维数组 八 指针变量所占字节数 九 静态数组的缺陷 十 malloc函数 十一 动态

随机推荐