C语言从头学24——函数原型

       前面学习函数时已经知道必须先存在一个函数然后才能使用,且这个函数的位置还要在 main()函数之前,否则的话编译时会报错。但我们写程序时,main() 函数是程序入口,程序的主要部分都在 main() 函数中,且其它函数也都要通过 main函数引入到程序中。因此,我们希望main函数能够尽量靠前,不要被其他子函数挤到后边去,导致阅读代码不方便;如何处理呢?为此引入函数原型概念。
       所谓函数原型就是仅包含函数的返回值类型、函数名称和参数类型等部分内容的函数头。
       自此,我们把函数声明与实现分开,声明就是仅声明函数原型部分;实现是函数原型(参数要写全)加上函数体一并完成。这样,我们在 main() 函数前声明函数原型后,等于提前告诉编译器,有一个这样的函数要使用,其他信息暂时不提供,有待后补。如此,编译器就不再报错。这样就解决了main()函数位置可能过于靠后的问题。举例:

#include<stdio.h>
void myPrint(char* s); //声明myPrint函数原型(s可写可不写,写上阅读代码清楚一些)
int main(void)
{char str[1024] = "Hello World!"; myPrint(str); //调用myPrint函数//传入的参数是数组名//数组名就是指向数组起始位置的指针,等价于&str[0]getchar();return 0;
}
void myPrint(char* s) //完整实现myPrint函数,位置就不必在main函数之前了,注意这里参数是要写全的
{printf(s);return;
}

       我们在写稍微长一些的程序时,即使把许多函数的实现放到main函数后边,也还是感到乱得很。怎么办呢?我们可以分文件编写。以使用VS编辑程序为例:我们右键头文件 -> 添加 -> 新建项,自己定义一个文件名(后缀也可以自己定义);接下来我们可以把若干个函数的声明及实现放到这个文件中。怎样使用这些文件呢?我们在main函数前面用#include把这个文件名包含进来就可以了。注意一点区别,系统提供的头文件名字是用尖括号括起来,我们自定义的不用尖括号,用引号引起来即可。类似这样的文件我们可以写上好几个,如此,程序的逻辑就容易看清楚了。

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

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

相关文章

[Linux内核驱动]自旋锁

自旋锁&#xff08;spinlock&#xff09; 更多内容可以查看我的github 概念 Spinlock是linux内核中常用的一种互斥锁机制&#xff0c;和mutex不同&#xff0c;当无法持锁进入临界区的时候&#xff0c;当前执行线索不会阻塞&#xff0c;而是不断的自旋等待该锁释放。 正因为如此…

河南大学24计算机考研数据,有三个学院招收计算机相关专业,都是考的408!

河南大学&#xff08;Henan University&#xff09;&#xff0c;简称“河大”&#xff0c;是河南省人民政府与中华人民共和国教育部共建高校&#xff0c;国家“双一流”建设高校&#xff0c;入选国家“111计划”、中西部高校基础能力建设工程、卓越医生教育培养计划、卓越法律人…

RFID优缺点和应用场景

一、RFID技术特点 优点 快速扫描&#xff1a;RFID识别器可以同时读写多个RFID标签&#xff0c;读取速度非常快。有源RFID系统的草图功能可以用于交互式服务&#xff0c;如过程跟踪和维护跟踪。 小型化和形状多样化&#xff1a;RFID标签向小型化和多样化方向发展&#xff0c;以…

怎么用二维码在线下载视频?视频用二维码下载的制作方法

怎么把视频转换成二维码之后还可以下载视频呢&#xff1f;现在使用二维码的方式来分享视频内容在很多行业和场景中都有应用&#xff0c;这种方式能够更加简单快捷的完成视频的传播分享&#xff0c;那么怎么让扫码者可以自由选择下载视频呢&#xff1f;下面来给大家分享扫码下载…

SQL server LAG方法改造 适配 SQL server 2008

LAG函数 方法 需要改造为 适配 SQL server 2008 ---改造前&#xff1a; select area_id, area_name, year, lag(cast(year as int ),1,1970) over (partition by area_id order by year) previous_year, …

深入探索C++中的AVL树

引言 在数据结构和算法的世界里&#xff0c;平衡二叉搜索树&#xff08;Balanced Binary Search Tree, BST&#xff09;是一种非常重要的数据结构。AVL树&#xff08;Adelson-Velsky和Landis发明的树&#xff09;就是平衡二叉搜索树的一种&#xff0c;它通过自平衡来维护其性质…

zookeeper + kafka消息队列

zookeeper kafka 消息队列 一、消息队列简介 1、什么是消息队列 消息队列&#xff08;Message Queue&#xff09;是一种用于跨进程或分布式系统中传递消息的通信机制。消息队列在异步通信、系统解耦、负载均衡和容错方面具有重要作用。 &#xff08;1&#xff09;特性 异步…

c++ 里构造函数的形参与数据成员的同名问题

如题&#xff0c;这时&#xff0c;或许在 java 里&#xff0c;会报语法错误。但在 c vs2019 开了 c20语法规范。这不再是错误。这样的好处是解决了咱们的起变量名的麻烦&#xff1a;重名现在已不是错误&#xff0c;编译器可以解决了。测试如下&#xff1a; 我们看看 c 编译器是…

如何正确理解和评估品牌价值?

在当今这个品牌林立的商业世界里&#xff0c;我们常常听到企业家们满怀憧憬地谈论品牌梦想。 但究竟是什么驱使这些企业去打造一个品牌&#xff0c;到底是市场的激烈竞争&#xff0c;还是内心的情感寄托&#xff1f;亦或是社会发展的必然趋势&#xff0c;引领我们追求超越产品…

C++ using 关键

先上代码 example 1&#xff1a; template <typename T> class Blocker : {public:using MessageType T;using MessageShrPtr std::shared_ptr<T>;using MessageQueue std::deque<MessageShrPtr>;using Callback std::function<void(const MessageS…

1969python房屋租赁管理系统mysql数据库Flask结构BootStrap布局计算机软件工程网页

一、源码特点 python Flask房屋租赁管理系统是一套完善的web设计系统mysql数据库 &#xff0c;对理解python编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 python flask 房屋租赁管理系统 开发环境pycharm mysql …

SpringBoot 项目,三种方式实现打印 sql 日志

方式一&#xff1a;指定mybatis日志级别 # application.yml mybatis:configuration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpl# 等价于application.properties mybatis.configuration.log-implorg.apache.ibatis.logging.stdout.StdOutImpl方式二、Mybatis-Plus…

酱香型白酒派系介绍

酱香型白酒作为中国传统白酒的重要流派&#xff0c;以其独特的酱香和复杂的酿造工艺而著称。在酱香型白酒中&#xff0c;形成了多个派系&#xff0c;各具特色。 以下是关于北派、茅派、川派和黔派等各个派系的详细介绍。 一、北派 地理位置&#xff1a;主要产于秦岭和淮河以…

AWS无服务器 应用程序开发—第十五章 CI/CD

创建一个针对 AWS Lambda 的 CI/CD 管道&#xff0c;可以大大提高开发和部署的效率和可靠性。以下是一个完整的示例&#xff0c;包括从 CodeCommit 开始的代码管理、使用 CodeBuild 进行单元测试、使用 CodePipeline 进行持续集成和持续部署 (CI/CD) 的具体步骤。 步骤 1&…

记一次通过脚本来实现自定义容器的自动重启

通过脚本来实现自定义容器的自动重启 1. 场景还原2. 自定义启动脚本3. 使用自定义脚本来作为容器启动的脚本4. 制作自定义脚本作为入口点的新镜像5. 测试新镜像启动是否走自定义启动脚本 1. 场景还原 现在我有一个自定义的Docker镜像&#xff0c;是基于基础镜像来构建的带有多…

【React】React 的StrictMode作用是什么,怎么使用?

React的<StrictMode>是一个用于在开发环境中检测潜在问题的工具,它可以帮助开发者在开发阶段识别并解决一些常见的编码问题,从而提高代码质量和应用的可靠性。以下是<StrictMode>的详细作用和使用方法: 作用 检测潜在问题:<StrictMode>会启用一些额外的…

Windows 图像处理组件(WIC)读写位深度24位的 bmp 文件

我写了类封装了一下。只是作业需要&#xff0c;缺少错误处理。 #include <wincodec.h>enum PixColor { B, G, R };struct ComEnv {ComEnv(){CoInitialize(nullptr);CoCreateInstance(CLSID_WICImagingFactory, nullptr, CLSCTX_INPROC_SERVER, IID_PPV_ARGS(&fac));…

一文了解HarmonyOSNEXT发布重点内容

华为在2024年6月21日的开发者大会上正式发布了HarmonyOS NEXT版&#xff0c;这是华为在操作系统领域的一次重大飞跃&#xff0c;标志着华为在构建全场景智能生态方面的卓越成就。HarmonyOS NEXT版不仅带来了全新的系统架构和性能提升&#xff0c;还首次将AI能力融入系统&#x…

docker方式启动的redis如何使用自定义配置文件

本文参考这篇文章&#xff1a;参考 一、首先先下载默认的配置文件 wget http://download.redis.io/redis-stable/redis.conf 然后下载备份数据目录&#xff08;这个是用来做备份的&#xff0c;放在宿主机上&#xff09; mkdir -p /usr/local/docker/data 二、启动redis 下…

鸿蒙正在跨越“生态繁荣阈值”

作者 | 曾响铃 文 | 响铃说 先讲一个故事。 一个朋友曾经做了一个本地互联网装修平台&#xff0c;一边是装修服务的提供者——各工种工人等&#xff0c;一边是有装修需求的业主。这个平台要做独立生态&#xff0c;绕过旧有的装修公司渠道垄断&#xff0c;直接提供服务&#…