C语言 函数声明和调用 - C语言零基础入门教程

目录

  • 一.简介
  • 二.函数声明和定义
    • 1.函数声明:不需要实现这个函数的功能
    • 2.函数定义:必须实现这个函数的功能
  • 三.函数调用
  • 四.函数形参和实参
  • 五.猜你喜欢

零基础 Python 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

一.简介

回顾以下学习C 语言的第一个程序HelloWorld,代码如下:

#include<stdio.h> //printf函数的声明就在该头文件中
void main()
{//因为 stdio.h 包含了printf函数声明,所以可以直接调用printf函数printf("hello world");
}

stdio.h 头文件包含了 printf 函数的声明和定义,所以我们可以直接调用该函数;当然我们也可以跳转到 stdio.h 头文件中查看 printf 函数的声明和定义:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - 函数声明和调用
//@Time:2021/06/20 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ _CRT_STDIO_INLINE int __CRTDECL printf(_In_z_ _Printf_format_string_ char const* const _Format,...)#if defined _NO_CRT_STDIO_INLINE;#else{int _Result;va_list _ArgList;__crt_va_start(_ArgList, _Format);_Result = _vfprintf_l(stdout, _Format, NULL, _ArgList);__crt_va_end(_ArgList);return _Result;}#endif

printf 函数的实现原理,你可以不用管,你只需要明白如何传递参数即可,这就是函数调用的过程;

二.函数声明和定义

函数声明只是一个空壳,不会有具体的函数实现,而定义要实现函数的实现,例如:

1.函数声明:不需要实现这个函数的功能

int sub(int x,int y); //只需要声明即可,不需要实现这个函数的功能

2.函数定义:必须实现这个函数的功能

int sub(int x,int y) 需要实现这个函数的功能
{return (x-y);
}

三.函数调用

函数在调用之前必须声明或者定义,否则会报错:找不到标识符,这也是为什么hello world中调用 printf 函数必须要包含 stdio.h 头文件的原因;

我们观察如下代码:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - 函数声明和调用
//@Time:2021/06/20 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ #include<stdio.h>
void main()
{int ret = sub(2, 1); //函数调用printf("ret:%d ", ret);return ;
}
int sub(int x, int y) //函数定义
{return (x - y);
}

编译的时候报错:

错误 C3861 “sub”: 找不到标识符  

首先我们分析:程序首先进入 main 函数,然后调用 sub 函数,此时在调用之前都找不到 sub 的声明,当然不知道 sub 是个什么玩意!!

解决办法一:将函数定义在 main 前面,示例代码如下:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - 函数声明和调用
//@Time:2021/06/20 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ #include<stdio.h>
int sub(int x, int y)//函数定义
{return (x - y);
}
void main()
{int ret = sub(2, 1);//函数调用printf("ret:%d ", ret);return ;
}

解决办法二:讲函数声明在 main 函数前面,只要有了函数声明,函数不论是定义在 main 函数前面或者后面都无所谓,示例代码如下:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - 函数声明和调用
//@Time:2021/06/20 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ #include<stdio.h>
//函数声明
int sub(int x, int y);
void main()
{int ret = sub(2, 1); //函数调用printf("ret:%d ", ret);return ;
}
//函数定义
int sub(int x, int y)
{return (x - y);
}

四.函数形参和实参

形参是函数定义的时候用的,实参是调用函数的时候用的,举个例子:

/******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:C语言教程 - 函数声明和调用
//@Time:2021/06/20 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/******************************************************************************************/ void fun(int a); /* 这里的a就是形参 */
int main()
{int b = 1;fun(b); /* b就是实参 */
}

五.猜你喜欢

  1. C语言逻辑运算符
  2. C语言三目运算符
  3. C语言逗号表达式
  4. C语言 sizeof 和 strlen 函数区别
  5. C语言 strcpy 和 strcpy_s 函数区别
  6. C语言 memcpy 和 memcpy_s 区别
  7. C语言 数组定义和使用
  8. C语言 数组遍历
  9. C语言 数组下标越界
  10. C语言 数组内存溢出
  11. C语言 数组下标越界和内存溢出区别
  12. C语言 二维数组定义和使用
  13. C语言 二维数组行数和列数计算
  14. C语言 指针声明和定义
  15. C语言 指针 p++ / p–
  16. C语言 p++/§++/_(p++)/_p++
  17. C语言 使用指针遍历数组
  18. C语言 指针和数组区别
  19. C语言 数组指针
  20. C语言 指针数组
  21. C语言 指针数组和数组指针区别
  22. C语言 空指针 NULL
  23. C语言 void 指针
  24. C语言 野指针
  25. C语言 函数声明和定义
  26. C语言 函数声明和调用

未经允许不得转载:猿说编程 » C语言 函数声明和调用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/524917.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

jq之$(“p:first“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

要闻君说:IBM最新量子计算机真真像个艺术品!鹅厂正式成立了自己的技术委员会哇!联想竟然也试着做了一款智能闹钟?...

关注并标星星CSDN云计算每周三次&#xff0c;打卡即read更快、更全了解泛云圈精彩newsgo go go 嗨&#xff0c;大家好&#xff01;盼望着、盼望着&#xff0c;周五已到&#xff01;今天又有什么新鲜事儿呢&#xff1f;依旧抢先听个歌曲陶冶下&#xff0c;再容头条君慢慢道来&am…

C语言 函数值传递和址传递 - C语言零基础入门教程

目录 一.简介 1.函数声明&#xff1a;不需要实现这个函数的功能2.函数定义&#xff1a;必须实现这个函数的功能3.函数调用&#xff1a;调用之前必须先声明或者定义 二.函数值传递三.函数址传递四.函数值传递和址传递区别五.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 &…

jq之$(“ul li:first“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

Spring中的9种设计模式汇总

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;Java和Android架构1. 简单工厂又叫做静态工厂方法&#xff08;StaticFactory Method&#xff09;模式&#xff0c;但不属于23种GOF设计模式之一。简单工厂模式的实质是由一个工厂类根据传入的参数&#xff0c;动…

C语言 函数缺省参数 - C语言零基础入门教程

目录 一.函数简介 1.函数声明2.函数定义3.函数调用4.函数形参和实参 二.函数缺省参数 1.函数全缺省参数2.函数半缺省参数 三.注意事项四.猜你喜欢 零基础 C/C 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.函数简介 1.函数声明 函数声明只是一个空壳&#xff0c…

jq之$(“ul li:first-child“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

云漫圈 | 什么是微服务?

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者&#xff1a;小灰来源&#xff1a;程序员小灰单体架构的痛点缺点一&#xff1a;项目过于臃肿当大大小小的功能模块都集中在同一项目的时候&#xff0c;整个项目必然会变得臃肿&#xff0c;让开发者难以维护。缺点二&#xff1a;…

C语言 函数不定长参数 - C语言零基础入门教程

目录 一.前言二.函数不定长参数简介 1.va_start2.va_arg3.va_end 三.自定义不定长参数的函数 1.va_start/va_arg/va_end 案例一2.va_start/va_arg/va_end 案例二 四.猜你喜欢 零基础 Python 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.前言 对 printf 函数的使…

jq之$(“[href]“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

五分钟解读“大数据”

戳蓝字“CSDN云计算”关注我们哦&#xff01;文章来自&#xff1a;鲜枣课堂作者&#xff1a;小枣君大家好&#xff0c;我是小枣君。2019年的第一篇文章&#xff0c;我们来聊聊大数据。这些年&#xff0c;大数据作为一个时髦概念&#xff0c;出现频率很高&#xff0c;关注度也很…

C语言 函数指针 - C语言零基础入门教程

目录 一.函数指针简介 1.常规函数声明2.函数指针声明 二.函数指针实战三.猜你喜欢 零基础 Python 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.函数指针简介 函数指针&#xff0c;其本质是一个指针&#xff0c;指向的是一个函数的地址。 基本声明形式&#xff1…

jq之$(“a[target=‘_blank‘]“)

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

数据版吐槽大会: 国产综艺节目年终盘点

戳蓝字“CSDN云计算”关注我们哦&#xff01;作者介绍&#xff1a;徐麟&#xff0c;目前就职于互联网公司数据部&#xff0c;哥大统计数据狗&#xff0c;从事数据挖掘&分析工作&#xff0c;喜欢用R&Python玩一些不一样的数据个人公众号&#xff1a;数据森麟&#xff08…

jq设置内容和属性

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

C语言 指针函数 - C语言零基础入门教程

目录 一.指针函数简介 1.常规函数声明2.指针函数声明 二.指针函数实战三.猜你喜欢 零基础 Python 学习路线推荐 : C/C 学习目录 >> C 语言基础入门 一.指针函数简介 指针函数&#xff0c;即返回指针的函数&#xff0c;其本质是一个函数&#xff0c;而该函数的返回值是一…

2018全球50大最佳发明名单

戳蓝字“CSDN云计算”关注我们哦&#xff01;来自&#xff1a;全国3D大赛提起发明创造&#xff0c;你会想到什么&#xff1f;每年《时代周刊》都会评选年度最佳发明&#xff0c;它们让世界变得更美好&#xff0c;更智能&#xff0c;或更有趣。Time 从世界各地征集了各类别的提名…

jq之attr()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…

虚拟化精华问答 | 什么是虚拟化?

戳蓝字“CSDN云计算”关注我们哦&#xff01;虚拟化是云计算的基础&#xff0c;基于虚拟化我们可以实现私有云、公有云、桌面云等。它的主要目的是对IT基础设施进行简化&#xff0c;简化对资源以及对资源管理的访问。那么今天就让我们一起就来探究云计算关键技术「虚拟化技术」…

jq之val()

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>jq之demo</title><!--线上jq库--><script src"https://code.jquery.com/jquery-3.4.1.min.js"></script><scrip…