“main”函数的返回值去了哪里?

2023-11-30

在C语言中,一个函数always将其值返回给调用函数,而不是返回给其自身(如果返回类型不为 void). Like,

int main()

但是由于 'main' 函数是由操作系统调用,即不是一个函数。那么,“main”函数返回值给谁呢?当使用表达式返回值时,该值会去哪里

return(0);

在程序结束时?


这完全是特定于操作系统的,但通常操作系统通过以下方式调用程序

  1. 设置程序的地址空间,
  2. 在操作系统内部的某个位置创建新进程的记录,
  3. 启动自己的自定义函数,该函数调用main并将返回值存储在操作系统内部。

我在 (3) 中提到的函数通常是一个很好的老式 C 函数,它只是跳转到main所以它可以捕获返回值main就好像它是一个普通的 C 函数(事实上也是如此)。然后,它将该值存储在操作系统域中的某个位置,以便需要读取返回值的进程可以这样做。

希望这可以帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“main”函数的返回值去了哪里? 的相关文章

  • 更新面板工作速度非常慢

    我正在编写一个用户可以注册的应用程序 注册时 可以选择多个选项 并根据这些注册字段可见或不可见以及是否必需 我想出了一个想法 所有字段都将位于 updatePanel 中 当用户更改注册选项时 我将在服务器端设置这些字段的可见性 它可以工作
  • 使用 CMake 时如何导出 Emscripten 中的 C 函数

    In 本教程 https emscripten org docs porting connecting cpp and javascript Interacting with code html interacting with code
  • Grpc - 将消息从一个客户端发送到连接到同一服务器的另一个客户端

    是否可以将消息从一个客户端发送到连接到同一服务器的另一个客户端 我想将数据从一个客户端发送到服务器然后发送到特定客户端 我想我需要获取客户端 ID 但我不知道如何获取此 ID 以及如何从服务器将此消息发送到该客户端 我这里有一个样本 这是一
  • Environment.CurrentDirectory 与 System.IO.Directory.GetCurrentDirectory

    我正在编写一个 Net WinForms 并不断在调试和发布配置之间切换 并且有一些文件我需要任一配置才能访问 我想做的是将文件放在 BIN 文件夹中的公共目录中 这样它看起来像这样 MyProject Bin CommonFiles My
  • 按扩展名过滤搜索文件返回太多结果

    我正在开发一个 C 控制台应用程序 它必须管理 Windows 操作系统上的文件 我需要获取具有特定扩展名的文件名 列表 我找到了很多解决方案 最建议的是以下一种 HANDLE hFind WIN32 FIND DATA data hFin
  • 未找到 Boost 库,但编译正常

    我正在尝试在 C 中使用 boost 的文件系统 使用时看起来编译没问题 c c Analyse c o Analyse o g W Wall L usr local lib lboost filesystem lboost system
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • `list()` 被认为是一个函数吗?

    list显然是内置类型 https docs python org 3 library stdtypes html list在Python中 我看到底下有一条评论this https stackoverflow com a 53645813
  • RestSharp获取序列化输出

    我正在寻找一种方法来访问 AddBody 调用的序列化结果 我正在使用内置的 RestSharp 序列化器 例子 class Foo public string FooField void SendRecord var f new Foo
  • 如何使用 Regex.Replace 从字符串中删除数字?

    我需要使用Regex Replace从字符串中删除所有数字和符号 输入示例 123 abcd33输出示例 abcd 请尝试以下操作 var output Regex Replace input d string Empty The d标识符
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 如何将AVFrame转换为glTexImage2D使用的纹理?

    如您所知 AVFrame 有 2 个属性 pFrame gt data pFrame gt linesize 当我从视频 sdcard test mp4 android平台 读取帧后 并将其转换为RGB AVFrame副 img conve
  • 在 .NET MAUI 中实现 TouchTracking

    我一直致力于将我们的应用程序从 Xamarin Forms 迁移到 NET MAUI 我们的应用程序几乎没有绘图功能 用户可以用手指进行绘图 我们用了TouchTrackingXamarin Forms 中的 nuget 包 但与 NET
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • Oauth2中如何同时撤销RefreshToken和使AccessToken失效

    我正在使用 Owin Oauth2 授权和资源服务器相同 开发单页面应用程序 AngularJS Net MVC Json Rest API 的身份验证流程 我选择了 Bearer Token 路由而不是传统的 cookie session
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • WPF DataGrid / ListView 绑定到数组 mvvm

    我们假设你有 N 个整数的数组 表示行数的整数值 在模型中 该整数绑定到视图中的 ComboBox Q1 如何将数组 或数组的各个项目 绑定到 DataGrid 或 ListView 控件 以便 当您更改 ComboBox 值时 只有那么多
  • 在 Win32 控制台应用程序中设置光标位置

    如何在 Win32 控制台应用程序中设置光标位置 最好 我想避免制作句柄并使用 Windows 控制台功能 我花了整个早上沿着那条黑暗的小巷跑 它产生的问题比它解决的问题还要多 我似乎记得当我在大学时使用 stdio 做这件事相对简单 但我
  • EntityFramework 6.0.0.0 读取数据,但不插入

    我创建了一个基于服务的数据库 folderName gt Add New Item gt Data gt Service based Database文件到 WPF 应用程序中 然后我用过Database First方法并创建了Person
  • 在 System.Type 上使用条件断点时出错

    这是函数 public void Init System Type Type this Type Type BuildFieldAttributes BuildDataColumns FieldAttributes 我在第一行设置了一个断点

随机推荐

  • Gtk:如何检测EventBox上的鼠标位置?

    I have been trying to write simple CAD application in Python I was tinkering with pyglet got some results but I decided
  • 如何在 R corrgram 中添加轴标签?

    我想在 x 轴和 y 轴上有水平和垂直标签 请参阅以下伪代码 Henrik 对相关线程 2013 的评论是关于关闭对角线标签 然后尝试关联轴的标签 但我不想关闭对角线标签 您可以通过设置 labels NULL 来关闭对角线标签 然后您可以
  • 使用服务主体创建 Azure AD 应用程序时权限不足,无法完成操作

    按照此处概述的代码进行操作 https github com Azure Samples active directory dotnet graphapi console blob master GraphConsoleAppV3 Prog
  • 将纬度和经度点转换为 UTM

    我找到了一个相当简单的示例来说明如何执行此操作 但我无法让它为我工作 我对 R 还很陌生 library rgdal xy lt cbind c 118 119 c 10 50 project xy proj utm zone 51 ell
  • SmtpClient 类未从 Web.Config 文件中获取默认参数

    配置文件
  • 在 Ember.js #each 中生成循环计数器

    我发现 Ember js 中车把模板的限制绝对是严重的 你不能执行任意的 JavaScript 您获得的只是一组固定的能力 if else each action view outlet 以及输出当前上下文对象的属性值的能力 这意味着我无法
  • Java 线程优先级

    我的主线程有一个私有 LinkedList 其中包含游戏中玩家的任务对象 然后 我有一个单独的线程 每小时运行一次 用于访问和清除该 LinkedList 并运行我的算法 该算法随机向每个玩家 LinkedList 添加新的未完成任务 现在
  • 在Scrapy中禁用SSL证书验证

    我目前正在努力解决 Scrapy 遇到的问题 每当我使用 Scrapy 抓取证书 CN 值与服务器域名相匹配的 HTTPS 站点时 Scrapy 都表现出色 但另一方面 每当我尝试抓取证书 CN 值与服务器域名不匹配的网站时 我都会得到以下
  • 当子类中使用“new”时,JavascriptSerializer 序列化属性两次

    尝试创建一项服务来返回具有许多共享属性的对象 但在某些情况下一个属性应该受到高度限制 这会导致奇怪且不期望的行为 即在序列化输出中重复使用属性名称 从而导致浏览器中出现不正确的行为 这是一个可以粘贴到 LINQPad 中的示例 如果您添加对
  • 使用刷新令牌 adal js 获取新的访问令牌

    我正在使用在天蓝色广告中进行身份验证的应用程序 我使用 adal js 获取访问令牌 但访问令牌的有效期仅为 1 小时 那么如何使用 Adal js 中的刷新令牌在幕后获取新令牌呢 如果您能提供示例代码 我们将不胜感激 只要用户与 Azur
  • JMeter无法使用插件打开JMeter文件

    当我尝试打开保存的 jmx 时出现错误 我的备份已经一周了 我尝试遵循类似的问题 但也无法使用 JMeter 3 1 加载它 我安装了新的 JMeter 3 2 并安装了所有可用插件的插件 但仍然收到错误 2017 08 30 10 03
  • 使用 NSNotificationCenter 向另一个类发送通知

    所以我的目标是使用以下命令向另一个班级发送通知NSNotificationCenter 我也想通过object并通知对方class 我该怎么做 您必须先注册一个通知名称 NSNotificationCenter defaultCenter
  • C 语言翻译的 8 个阶段的海报

    有没有人参考过海报 单页 pdf 或类似的内容 其中包含 C 语言翻译的八个阶段的列表 第一个阶段是三字母翻译 我想打印一张挂在电脑旁边的墙上 更新 抱歉忘记指定 我对 C90 感兴趣 虽然 C99 可能非常接近 Pragma正如 PMG
  • R:如何在 ggplotly 中自定义桑基图?

    我有按年份和型号划分的销售数据 可以通过以下方式可视化桑基图 现在我正在努力处理两个问题 首先我需要设置模型B多年来 无论其价值如何 总是处于闲聊的底部 当我通过重新可视化 ggplot 时ggplotly hover不显示销售额或年份 c
  • Jenkins 管道 ansicolor 控制台输出

    我知道可以使用 AnsiColor 插件在控制台输出中显示颜色 我测试了下面的基本示例 This shows a simple build wrapper example using the AnsiColor plugin node Th
  • Python 迭代器没有ext() 吗?

    Python 迭代器有吗hasnext method 捕捉的替代方案StopIteration是使用next iterator default value 例如 gt gt gt a iter hi gt gt gt print next
  • Android:如何写入SQL数据库

    我一直在尝试遵循 newBoston 教程 但当我单击按钮将数据写入数据库时 发现出现运行时错误 LogCat 显示 在活动中找不到方法 addModuleButton View 有什么建议么 添加模块活动 public class Add
  • 从另一个线程填充列表视图

    我试图从另一个类填充列表视图 但出现此错误 跨线程操作无效 控制 listView1 是从创建它的线程以外的线程访问的 在我的课堂上 我像这样声明我的列表视图 class CheckBlankPages public String pdfF
  • 使用#pragma warning push/pop 是暂时改变警告级别的正确方法吗?

    有时很难编写完全不发出警告的 C 代码 然而 启用警告是一个好主意 因此 通常有必要禁用某些特定构造的警告 并在所有其他代码片段中启用它们 到目前为止我已经看到了两种方法 第一个是使用 pragma warning push and pra
  • “main”函数的返回值去了哪里?

    在C语言中 一个函数always将其值返回给调用函数 而不是返回给其自身 如果返回类型不为 void Like int main 但是由于 main 函数是由操作系统调用 即不是一个函数 那么 main 函数返回值给谁呢 当使用表达式返回值