关于“main(int argc, char *argv[])”[重复]

2023-12-11

可能的重复:
main() 的参数有什么用?
int argc, char *argv[] 是什么意思?

每个程序都以main(int argc, char *argv[])定义。

我不明白这是什么意思。如果有人能解释为什么我们在程序中不使用这些参数,我会非常高兴?为什么不只是:int main()?

程序名称是以下元素之一*argv[] and argc是参数数量的计数*argv[]?发送到的其他参数是什么*argv[]?我们如何发送它们?


The arguments argc and argv of main is used as a way to send arguments to a program, the possibly most familiar way is to use the good ol' terminal where a user could type cat file. Here the word cat is a program that takes a file and outputs it to standard output (stdout).

该程序接收参数的数量argc和参数向量argv,在上面的argument c数量将是两个(程序名称算作第一个参数)并且argument vector 将包含 [cat,file,null]。而最后一个元素是空指针。

通常,你会这样写:

int  // Specifies that type of variable the function returns.
     // main() must return an integer
main ( int argc, char **argv ) {
     // code
     return 0; // Indicates that everything went well.
}

如果您的程序不需要任何参数,那么编写一个同样有效main- 按以下方式运行:

int main() {
  // code
  return 0; // Zero indicates success, while any 
  // Non-Zero value indicates a failure/error
}

在C语言的早期版本中,没有int before main正如所暗示的那样。今天,这被认为是一个错误。

On POSIX-兼容系统(和Windows),可以使用第三个参数char **envp其中包含程序向量env铁变量。参数列表的进一步变化main函数存在,但我不会在这里详细说明它,因为它是非标准的。

另外,变量的命名是习俗并且没有实际意义。坚持这一点总是一个好主意,这样你就不会混淆其他人,但定义它同样有效main as

int main(int c, char **v, char **e) {
   // code
   return 0;
}

对于第二个问题,有多种方法可以向程序发送参数。我建议你看看exec*()函数族这是POSIX-标准,但可能是easier只是使用system("command arg1 arg2"),但是使用system()通常不受欢迎,因为它不能保证在每个系统上都能工作。我自己没有测试过;但如果没有bash,zsh,或安装在 *NIX 系统上的其他 shell,system()将失败。

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

关于“main(int argc, char *argv[])”[重复] 的相关文章

随机推荐

  • 将 FrameLayout 转换为位图

    我有一个 FrameLayout 其中包含一些图像视图和一个 EditText 我将此布局保存为内存中的图像 外部 第一次 当我在 imageviews 中设置图像时 一切都很顺利 即正在保存确切的图像 与屏幕上显示的相同 但是第一次保存后
  • Matplotlib 滚动条

    我有一个线泛化算法 并且想在图中添加一个滚动条 以增加容差 即使线变得越来越泛化 使用 matplotlib 这怎么可能 总而言之 我希望能够单击并拖动滑块 以显示线上公差效果的增加 仍然在努力解决这个问题 我只想要一个从 1 到 10 的
  • 如何将“IsDirty”属性添加到 LINQ to SQL 实体?

    我将我的实体绑定到 WPF 中的编辑表单 在 DataTemplate 中 我希望能够设置 DataTemplate 中根容器的背景颜色 以显示它已更改并且这些更改尚未提交到数据库 这是一个非常简单的示例 演示了我正在谈论的内容 请原谅错误
  • 使用 css 强制抗锯齿:这是一个神话吗?

    最近 一位客户抱怨 IE6 中系统字体的外观 基本上这个问题是 IE6 不支持字体平滑 抗锯齿 我知道你可以在操作系统设置或其他设置中打开它 但有人扔掉了这个宝石 您可以使用 pt 而不是 px 来强制 css 中的字体反锯齿 我在各种浏览
  • 使用 JHipster 将新字段添加到现有实体

    当我尝试向现有实体添加新字段时遇到问题 我运行这个命令 yo jhipster entity Libro 和我选择 BETA 是的 添加更多字段和关系 但是当我尝试使用 mvnw 编译我的项目时 我收到此错误http pastebin co
  • 托管 C++ 中 future 和 Promise 的替代方案是什么

    当使用 clr 标志编译托管 C 代码时 编译器不允许包含 我正在尝试将非托管 C 代码移植到托管 C 环境中 我看到 C 有替代方案 Task 和 TaskCompletionSource 来替代 futures 和 Promise 但我
  • 如何使用BottomNavigationBar显示活动(无法转换为片段)?

    我在显示我的活动时遇到问题 我不知道如何实现方法注意活动 to 主页片段 主页片段是由底部导航栏不执行注意活动 注意活动 public class NoteActivity extends AppCompatActivity private
  • Java多级比较器

    我正在解决一个问题 我必须从输入文件中获取这些 歌曲艺术家对 并按字母顺序排序 排序指南如下 应首先按作者姓名对歌曲 艺术家对进行排序 按艺术家排序后 如果同一艺术家有多首歌曲 也应按字母顺序排序 如果艺术家姓名以 The 开头 则出于排序
  • 如何将 int 拆分为其数字?

    如何将 C 中的 int 拆分为其单个数字 例如 我想将 23 拆分为 2 和 3 给定数字 12345 5 is 12345 10 4 is 12345 10 10 3 is 12345 100 10 2 is 12345 1000 10
  • HABTM关系查找所有记录,排除一些基于关联的记录

    我看过一些与此相关的类似帖子 但我正在努力解决这个问题 我在项目和用户之间有一个 habtm 关系 我正在尝试查找特定用户不属于的所有项目 但我不知道如何查找 我尝试过这样的事情 Project where project id user
  • C++中动态分配的链表。发生异常后如何防止内存泄漏?

    我喜欢用c 实现链表 在添加新节点时我动态分配它 如果某些分配失败 我希望我的程序停止执行 新节点 失败后 会引发异常 因此我必须在异常处理程序中显式调用析构函数 我该如何处理这种情况以防止内存泄漏 这是我写的代码 链表 h pragma
  • webcomponents.js 失败并出现错误 404

    运行与 webcomponents js 相关的 dart 应用程序时 我在控制台中看到异常 一切都按预期运行 我应该忽略这个异常吗 Failed to load resource the server responded with a s
  • 从网页中抓取文本

    我想编写一个程序来查找公交车站时间并相应地更新我的个人网页 如果我手动执行此操作 我会 访问 www calgarytransit com 输入停靠站号码 即 9510 点击 下一班车 按钮 结果可能如下所示 10 16p 154号公路10
  • 为什么 Swift 中 UInt64 max 等于 -1?

    使用 Swift 无论是在终端还是操场上 当我在新行中输入以下内容时 UInt64 max 我得到的结果值为 1 这是一个错误吗 Edit 例子 xcrun swift Welcome to Swift Type help for assi
  • 为什么 nginx 不缓存我的内容?

    我检查了缓存路径 usr local nginx proxy cache 多次访问某个网址后找不到缓存文件 我的配置 nginx conf http include etc nginx mime types default type app
  • UTF-8 编码的 html 页面显示 �(问号)而不是字符

    我在 win7 x64 上安装了标准 XAMPP 在过去的项目中 我遇到了编码问题 其中 mysql 编码与 php 编码不匹配 而 php 编码有时会以其他编码输出 html 因此我决定一致地使用 utf 8 对所有内容进行编码 我刚刚开
  • 向必须共享环境的 bash shell 发送多个命令

    我试图在这里遵循这个答案 https stackoverflow com a 5087695 343381 我需要在单个环境中执行多个 bash 命令 我的测试用例很简单 import subprocess cmd subprocess P
  • ASP.NET MVC 使用 AJAX 将模型传递给控制器

    我正在尝试通过 ajax 调用将模型传递到我的控制器 我查看了拉维亚克在以下问题中提供的答案 但无法使其发挥作用 可能的答案 当 ajax 调用运行时 我收到 MODEL 变量的未定义错误 我已经确认正在调用辅助类并返回一个字符串 是因为
  • 如何捕获/收听 Android 网络浏览器下载

    我的 Android 应用程序会监听浏览器意图 以便在用户单击某种类型的 URI 时捕获它们 更具体地说 我希望当用户单击指向 torrent 文件的超链接 例如http somewhere file torrent 请参阅下面我的应用程序
  • 关于“main(int argc, char *argv[])”[重复]

    这个问题在这里已经有答案了 可能的重复 main 的参数有什么用 int argc char argv 是什么意思 每个程序都以main int argc char argv 定义 我不明白这是什么意思 如果有人能解释为什么我们在程序中不使