自定义函数的作用:

  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);
}

C语言之自定义函数的实现相关推荐

  1. R语言编写自定义函数计算R方、使用自助法Bootstrapping估计多元回归模型的R方的置信区间、可视化获得的boot对象、估计单个统计量的置信区间、分别使用分位数法和BCa法

    R语言编写自定义函数计算R方.使用自助法Bootstrapping估计多元回归模型的R方的置信区间.可视化获得的boot对象.估计单个统计量的置信区间.分别使用分位数法和BCa法(Bootstrapp ...

  2. R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置、图例标题、键值、文本字体大小(title、text、key)、颜色标识的大小、点形状pch的大小

    R语言编写自定义函数自定义ggplot图像中的图例(legend)的位置.图例标题.键值.文本字体大小(title.text.key).颜色标识的大小.点形状pch的大小 目录

  3. R语言编写自定义函数、评估回归模型预测变量的相对重要性(Relative importance)、通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加、评估预测变量的重要度、并通过点图可视化

    R语言编写自定义函数.评估回归模型预测变量的相对重要性(Relative importance).通过在所有可能的子模型中添加一个预测变量而获得的R方的平均增加.来评估预测变量的重要程度.并通过点图可 ...

  4. R语言编写自定义函数、创建使用ggplot2生成图标(icon)的主题(theme)函数、使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标、ggsave保存图标(png、svg

    R语言编写自定义函数.创建使用ggplot2生成图标(icon)的主题(theme)函数.使用ggplot2以及自定义的图标主题函数创建箱图(boxplot)图标.ggsave保存图标(png.svg ...

  5. R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值、自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N、中位数median、四分位数的间距iqr)

    R语言编写自定义函数基于ggsumarystats函数计算每个分组的统计值.自定义可视化分组分面条形图,并在X轴标签下方添加分组对应的统计值(样本数N.中位数median.四分位数的间距iqr) 目录

  6. R语言编写自定义函数使用Wilcoxon符号秩检验(Wilcoxon signed rank)实现多分组非参数成对检验(pairwise)、并使用p.adjust函数调整概率值

    R语言编写自定义函数使用Wilcoxon符号秩检验(Wilcoxon signed rank)实现多分组非参数成对检验(Nonparametric pairwise multiple comparis ...

  7. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果、LIME解释器进行模型预测结果解释并可视化

    R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释一个iris数据样本的预测结果.LIME解释器进行模型预测结果解释并可视化 ...

  8. R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果、使用LIME解释器进行模型预测结果解释

    R语言基于自定义函数构建xgboost模型并使用LIME解释器进行模型预测结果解释:基于训练数据以及模型构建LIME解释器解释多个iris数据样本的预测结果.使用LIME解释器进行模型预测结果解释并可 ...

  9. python定义函数prime判断是否是素数_用自定义函数判断素数 用C语言编写自定义函数prime(int x),判断x是否为素数?...

    用C语言编写自定义函数prime(int x),判断x是否为素数? int prime(int x) { int i,k k=(int)sqrt( (double)x ) for(i=2i&l ...

  10. R语言编写自定义函数计算分类模型评估指标:准确度、特异度、敏感度、PPV、NPV、数据数据为模型预测后的混淆矩阵、比较多个分类模型分类性能(逻辑回归、决策树、随机森林、支持向量机)

    R语言编写自定义函数计算分类模型评估指标:准确度.特异度.敏感度.PPV.NPV.数据数据为模型预测后的混淆矩阵.比较多个分类模型分类性能(逻辑回归.决策树.随机森林.支持向量机) 目录

最新文章

  1. 二十二、插值查找算法
  2. 《精通移动app测试实战:技术、工具和案例》图书目录
  3. Facebook:正变为下一个微信?
  4. P4127 [AHOI2009]同类分布 数位dp + 对状态剪枝
  5. 今天的在一旁看电视的蜡笔小新
  6. 用python写一个文件管理程序下载_Python管理文件神器 os.walk
  7. The file contains a character that cannot be represented in the current code pag
  8. Docker工作笔记001---Docker的简介
  9. BZOJ 2049: [Sdoi2008]Cave 洞穴勘测——LCT
  10. 【nodejs】让nodejs像后端mvc框架(asp.net mvc)一orm篇【如EF般丝滑】typeorm介绍(8/8)...
  11. 数据分析|如何利用BI工具,探索各商品的潜在关联价值
  12. iOS底层探索之Runtime(二): objc_msgSend汇编快速查找分析
  13. RISC技术市场分析
  14. 信息安全-网络安全风险评估技术原理与应用(二)
  15. redis中数据倾斜问题的产生和解决方案
  16. java怎么设置表格分页显示_javaweb--layui表格分页
  17. 根据url批量下载图片
  18. Matplotlib学习之subplots函数
  19. 小米最大的竞争对手不是苹果而是华为
  20. MySQL-MySQL连接,创建,删除数据库database

热门文章

  1. 计算机cmos参数的设置,CMOS常见的设置方法
  2. C++获取字符串长度
  3. 伟景行Citymaker高亮图层的内元素CSharp
  4. php ajax传递数组,ajax怎样传递数组到后台
  5. JAVA IO流(韩顺平)
  6. Spring boot +Mybaits
  7. 基于控制主题的对话生成 相关论文总结
  8. FODM8061半距微型扁平逻辑兼容的高速光电耦合器
  9. 微信php开发 抽奖,微信(weixin)大转盘抽奖页面、数据库以及抽奖算法(PHP源码......
  10. 目标必须要符合SMART原则