从C出发 17 --- 函数调用

news2024/10/6 22:33:54

从表面上来看,函数就是一个代码片段,只不过说这个代码片段可以反复利用,通过调用的方式反复利用,通过函数调用,我们可以将参数传到函数所对应的代码片段里面,然后代码片段去处理这些参数,得到一个我们想要的结果

程序是从 mian 开始执行的,我们将代码写到 mian 里面,就会顺序的向下执行了,

为什么说 C 语言的程序入口是 main呐?

它是一个名为 main 的函数,没有参数返回类型为 int ,函数体没有任何有意义的语句,只有一个 return 语句,return 语句将 0作为结果返回,这个 0 是字面量,默认类型是 int , 所以和 main 的返回类型就对应起来了,换句话说,main 被调用后得到的结果就是 0

 main 是一个函数,为什么是c 语言的入口,因为它是c 语言里面被调用的第一个函数,一个有效的 c 语言程序 ,必须有main ,没有main 就不知道怎么运行了

应用程序 必须依赖于操作系统才能够运行,应用程序无法独立存在,必须依托于操作系统,接受操作系统的管理,操作系统要运行一个程序,那么程序就得运行,要结束一个程序,那么这个程序就得结束

类比 :  平时使用电脑的时候,可以通过任务管理器结束任务,为什么win 可以这么干呐,原因是操作系统管理应用程序,它可以运行一个应用程序,也可以结束一个应用程序

 上面给我们的感觉是,这个程序是我们人工运行的,管操作系统什么事啊?

 我们双击一个应用程序,其实是给操作系统下指令,双击之后操作系统就往下执行了,操作系统执行这个命令,这个命令是什么,就是加载运行我们指定的应用程序

 意味着运行一个应用程序的方法不止一种,不止双击可以运行,还可以在命令行里面指定应用程序的文件名来运行它

 

想要运行一个应用程序,只需要给操作系统下命令,具体的加载运行是由操作系统来完成的,操作系统加载应用程序到内存里面,然后调用main 这个时候 main 的返回值,就返回给操作系统

得到一个 0 值, 这个 0 值是什么,就是之前运行text.exe 当中 main 函数的返回值

再验证

 

 


main 函数是第一个被调用的函数

 

然会我们可以在main 函数里面调用别的函数,在别的函数里面又可以调用别的函数,可以一直的往下调用程序,就是函数之间的相互调用组合

这意味着我们想要用 c 语言程序来解决问题时,就得考虑函数

C 编写函数的核心思想: 有没有现成的函数可以调用,如果没有的话该编写什么样的函数,这些函数怎么组合调用来完成程序的最终功能

函数调用这个动作必然发生在 2 个函数之间 ,一个是主调函数,另一个是被调函数

 

 printf 是一个函数,我们可以调用这个函数来进行屏幕打印,而这个函数所需要的参数就是我们想要在屏幕上面打印的东西

system ("pause"); 以函数的观点来看是什么,他是 stdlib.h 中的函数,当这个函数调用以后,就会暂停当前程序的执行,并且在屏幕上面,并且在屏幕上面打印字符串  请按任意键继续

 

函数调用的过程有 3 点                           如上

暂停什么 ? 暂停主调函数

执行什么 ? 执行被调函数

恢复什么 ?   恢复主调函数

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

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

相关文章

Linux下Samba服务器的安装与配置(简单实用)

为了可以实现Linux与windows之间实现文件的共享,方便文件可以直接修改,而不是像以前需要拷贝文件再进行修改,samba的诞生是为了实现现在的这些需求。我们知道Linux之间可以使用NFS服务器来实现文件的共享,samba的诞生就是为了使wi…

Spring Cloud Security

Spring Cloud Security Spring Cloud Security用于构建微服务的安全应用程序和服务,它可以轻松实现微服务系统架构下的统一安全认证与授权。 Spring Cloud Security 有以下组件。 spring-cloud-security:为Zuul、Feign、Oauth 2.0 的Resource Serve…

ChatGPT5是否会影响人类的发展和工作?

目录前言ChatGPT5是什么ChatGPT5 的潜在影响挑战与风险总结前言 ChatGPT的普及也带来了大量的讨论,关于它是否会影响人类的发展和工作。本文将讨论 ChatGPT5 如何可能改变人类的工作和发展,以及潜在的利弊和挑战。在话题开始之前,让我们先从…

QxOrm的使用-数据操作--增删改查

文章目录QxOrm的使用-数据操作使用QxOrm对数据库进行增删改查新增数据删除数据修改数据查询数据QxOrm的使用-数据操作 上一篇我们讲了QxOrm的基本的数据映射操作,这里面再补充一点东西 数据类型映射 Qt/C类型数据库类型boolSMALLINTqx_boolSMALLINTshortSMALLINT…

【谷粒商城之整合阿里云OSS对象存储】

本笔记内容为尚硅谷谷粒商城整合阿里云OSS对象存储部分 目录 一 、简介 二、云存储开通与使用 1、开通阿里云对象存储服务 2、创建bucket 3、创建子用户(获取密钥访问OSS服务器) 给该子账户添加权限 4、阿里云对象存储上传方式 三、整合 1、…

BUUCTF--Web篇详细wp

BUUCTF--Web篇详细wp[极客大挑战 2019]EasySQL[极客大挑战 2019]Havefun[HCTF 2018]WarmUp[ACTF2020 新生赛]Include[ACTF2020 新生赛]Exec[强网杯 2019]随便注[GXYCTF2019]Ping Ping Ping[SUCTF 2019]EasySQL[极客大挑战 2019]Secret File[极客大挑战 2019]LoveSQL[极客大挑战…

MySQL 分布式数据库实现:无需修改代码,轻松实现分布式能力

这个项目做什么 ShardingSphere-Proxy,可以让用户像使用原生数据库一样使用 Apache ShardingSphere。 了解一项技术的开始,一般从官网开始。先来看一看官网对 ShardingSphere-Proxy 的定义是什么样的: 定位为透明化的数据库代理端&#xff…

异配图神经网络——Graph Transformer Networks

一.论文概述 作者提出了Graph Transformer Network (GTN)用来在异配图(heterogeneous graph)上学习节点表示。通过Graph Transformer层,模型能将异构图转换为由meta-path定义的多个新图,这些meta-paths具有任意的边类型和长度&am…

运行Spring Boot项目时[ java: 错误: 不支持发行版本 17 ]

项目场景: 使用IDEA的Spring Initializr构建的Spring boot项目在构建完成后运行出错 问题描述: 用Spring Initializr创建了Spring Boot 项目后,运行时报错: “错误:java: 错误: 不支持发行版本 17”根据错误信息得知&#xff…

Vue学习笔记(5. 计算属性,监视器(侦听器))

1. 计算属性(computed) (1) get方式 初期显示 改变值后(hello -> hello1)计算属性allStr跟随变更 (2) get set方式 页面初期显示 改变值(hello -> hello1)计算属性的get会监控到变更,使…

国产SSD、内存卷哭国外大厂,三星宣布减产涨价在路上了

PC 圈有一句话是这么说的:论价格屠夫还得看国产品牌! 可不是嘛,国产长鑫、长江算是彻底将全球存储芯片市场搅局者这一「骂名」坐实了! 不说特别早期,前几年吧,普通单条 8G DDR4 内存都能卖到六七百元&…

C++ 红黑树

1.红黑树的概念 红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可以是Red或Black。 通过对任何一条从根到叶子的路径上各个结点着色方式的限制,红黑树确保没有一条路 径会比其他路径长出俩倍,因…

D. Many Perfect Squares

题目链接:Problem - D - Codeforces 题意:给你一个数组,大小不超过50个。 问你让他们全部加上一个x,构造出来最多能够有多少个完全平方数。 思路: 先对数组排个序,首先它最少一定是有一个的&#xff0c…

Git配置SSH步骤

一、git 配置 (1)打开 git 命令窗口 (2)配置用户名(填自己的姓名) git config --global user.name “linjiaxiaozhu” (3)配置用户邮箱(填自己的邮箱) git…

电脑录屏的视频保存在哪里?您可以这样查看

案例:电脑录屏之后保存到哪里去了? “前几天,根据网络上的录屏教程试着录制了一下我的电脑屏幕,录制完成之后却找不到录制的视频。有没有小伙伴知道电脑录屏的视频保存在哪里?怎样才能快速找到?” 在现代…

pandas数据聚合和重组

介绍pandas数据聚合和重组的相关知识,仅供参考。 目录 1GroupBy技术 1.1简介 1.2对分组进行迭代 1.3选取一个或一组列 1.4通过字典或Series进行分组 1.5利用函数进行分组 2数据聚合 2.1简介 2.1面向列的多函数应用 2.2以‘无索引’的方式返回聚合数据 1G…

Faster R-CNN

目录 1. Fast R-CNN的不足 2. Faster R-CNN 3. RPN(Region Proposal Network) 3.1 anchor 3.2 RPN 网络 3.3 RPN 网络的损失 4. Faster R-CNN 损失 5. Faster R-CNN 训练 6. 对比 1. Fast R-CNN的不足 Fast R-CNN 的算法流程 Fast R-CNN网络运行速度慢的最主要原因&a…

浅谈根号分治与分块

文章目录1. 根号分治哈希冲突2. 线性分块引入教主的魔法[CQOI2011] 动态逆序对[国家集训队] 排队[HNOI2010] 弹飞绵羊蒲公英1. 根号分治 哈希冲突 题目1 nnn 个数,mmm 次操作。操作 1 为修改某一个数的值,操作 2 为查询所有满足下标模 xxx 等于 yyy 的…

一、基础算法6:双指针算法 模板题+算法模板(最长连续不重复子序列,数组元素的目标和,判断子序列)

文章目录算法模板双指针算法模板最长连续不重复子序列模板暴力法双指针算法数组元素的目标和模板判断子序列模板模板题最长连续不重复子序列原题链接题目题解数组元素的目标和原题链接题目题解判断子序列原题链接题目题解算法模板 双指针算法模板 for (int i 0, j 0; i <…

ForkJoinPool + RecursiveTask 来计算数组元素和

ForkJoinPool 是什么&#xff1f; ForkJoinPool 是一个 Java 并发编程框架&#xff0c;用于解决分治算法中的任务拆分、执行、合并等问题&#xff0c;是 Java 7 引入的一个新的工具类。 ForkJoinPool 的基本思想是将一个大任务划分成若干个小任务&#xff0c;然后并行执行这些…