今天和大家讨论一个常见的但是不容易深入了解的知识点。那就是 main 函数声明中使用到的 argc 和 argv 的含义。

通常我们写主函数的时候一般都是直接使用int main() 或者 void main() 来声明 main 函数。

但是你知道吗?在c89/c99的语言标准中,main函数的声明方式还包括以下形式:

代码语言:javascript

代码运行次数:0

运行

AI代码解释

int main(int argc,char **argv)
int main(int argc,char *argv[]) 

以上两种 main 函数的声明方式具有相同的含义。argc 和 argv 的主要用途为程序运行时,将命令行中的输入参数传递给调用函数。

这两个参数的意义分别如下:

int argc:参数个数计数,是一个 int 变量,取值为「用户调用程序输入的参数」+ 1。

为什么要加 1 呢?我们接着往下看。

char **argv:一个存储字符串的数组,会以字符串的形式保存用户调用程序时传入的参数。

代码语言:javascript

代码运行次数:0

运行

AI代码解释

argv[0] = 调用程序时使用的程序名
argv[1] = 参数1
argv[2] = 参数2
argv[3] = 参数3
。。。

现在大家知道为什么 argc 的取值要 +1了吧!原因就在于 argv 中存储的第一个字符串是调用程序名。

下面我们动手实践一下,将下面的代码编译后生成对应的可执行程序(.exe)后运行。

代码语言:javascript

代码运行次数:0

运行

AI代码解释

#include <stdio.h>
#include <stdlib.h>
int main(int argc, char* argv[])
{printf("参数个数=%d\n", argc);for (int i = 0; i < argc; i++){printf("%s\n", argv[i]);}system("PAUSE");return 0;
}

在操作系统中打开一个命令行。

代码语言:javascript

代码运行次数:0

运行

AI代码解释

windows 操作系统 win + R 快捷键打开搜索框,输入 cmd 回车即可。
linux 操作系统 ctrl + alt + t 快捷键即可。

然后我们在命令行中调用该程序,执行 main 函数,输出结果如下图所示:

从上述程序的输出结果可以清楚的看到 argc 和 argv 代表的具体含义

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

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

相关文章

如何简单实现发版不影响客户使用?nginx负载

nginx负载发版不影响客户使用 1.需要二台服务器 2.二台服务器均是正式环境配置 3.服务器Nginx配置修改 发版顺序&#xff1a;先在服务器2发版&#xff0c;发布成功后&#xff0c;再改服务器Nginx配置&#xff0c;重新加载nginx&#xff1b;然后在服务器再发版&#xff0c;发布成…

qt笔记(1)——Qtablewidget使用

1.基础使用方法 &#xff08;略&#xff09; 2.坑和注意点 2.1 设置一个单元格的编辑属性 在代码中&#xff0c;想要修改一个单元格的编辑属性&#xff0c;需要对这个item的flags进行设置&#xff1b;注意对一个tablewidget的一个item成员进行设置后&#xff0c;进行一次编…

字符串的模糊匹配方法介绍

字符串的模糊匹配方法介绍 目录字符串的模糊匹配方法介绍一、编辑距离&#xff08;Levenshtein Distance&#xff09;复杂度分析二、Jaro-Winkler 距离复杂度分析三、最长公共子序列&#xff08;LCS&#xff09;复杂度分析四、模糊搜索&#xff08;Fuzzy Search&#xff09;复杂…

ActiveMQ在Spring Boot中的详细使用指南

📋 目录 🚀 ActiveMQ简介 什么是ActiveMQ? 核心概念 🏗️ 基础架构组件 📝 重要概念解释 ActiveMQ vs 其他消息中间件 🔧 环境搭建 1. ActiveMQ服务端安装 Docker方式(推荐初学者) 手动安装方式 2. 验证安装 访问Web管理界面 连接参数 测试连接 �…

二元一次方程

前言 最近刚学二元一次方程&#xff0c;想写一篇专栏熟悉一下本文写给初一的同学看&#xff0c;学过的就划了吧二元一次方程 两个未知数最高项次数为 111 次为整式方程二元一次方程的解不唯一&#xff0c;但是二元一次方程可以用一个未知数来表达另一个未知数eg:eg:eg: xy1x y…

AI编程的未来是智能体原生开发?

目录 前言 一、从“串行”到“并行”&#xff1a;什么是智能体原生开发&#xff1f; 1.1 传统模式&#xff08;串行思维&#xff09; 1.2 智能体原生模式&#xff08;并行思维&#xff09; 二、程序员的新角色&#xff1a;从代码手艺人到系统思想家 三、软件开发的终局&a…

【牛客刷题】小红的与运算

文章目录 一、题目介绍1.1 题目描述1.2 输入描述1.3 输出描述1.4 示例二、 解题思路2.1 核心算法设计2.2 性能优化关键2.3 算法流程图三、解法实现3.1 解法一:基础实现3.1.1 初级版本分析3.2 解法二:优化版本(推荐)3.2.1 优化版本分析四、总结与拓展4.1 关键优化技术4.2 算…

spring中 方法上@Transation实现原理

Spring中Transactional注解方法实现原理Spring的Transactional注解在方法级别实现事务管理的原理主要基于动态代理和拦截器机制&#xff0c;以下是其核心实现流程&#xff1a;1. 代理创建阶段当Spring容器启动时&#xff0c;会为带有Transactional注解的类创建代理对象&#xf…

qt-C++语法笔记之Stretch与Spacer的关系分析

qt-C语法笔记之Stretch与Spacer的关系分析 code review! 文章目录qt-C语法笔记之Stretch与Spacer的关系分析1. Stretch&#xff08;拉伸因子&#xff09;2. Horizontal Spacer 和 Vertical Spacer3. Stretch 和 Spacer 的关系4. 实际应用中的选择5. 注意事项6. 代码与 Qt Desig…

Qwen3技术综述

1. 引入 2025年5月&#xff0c;qwen推出了旗舰模型&#xff08;flagship model&#xff09;Qwen3-235B-A22B。并以Apache 2.0版权发布&#xff08;可自由商业使用&#xff0c;修改代码和商用要包含原始版权&#xff09;。本文对其技术报告中提到的数据处理技术与模型结构进行综…

[特殊字符] Excel 读取收件人 + Outlook 批量发送带附件邮件 —— Python 自动化实战

许多公司定期需要将不同部门或客户的报告发送给指定人员。手动操作容易出错、耗时且繁琐。今天这篇文章教你如何利用 Python 实现&#xff1a; &#x1f9e9; 从 Excel 中读取“收件人 抄送人 附件文件路径”&#xff1b; &#x1f4e4; 使用 win32com.client 调用 Outlook …

多模态大语言模型arxiv论文略读(152)

VidComposition: Can MLLMs Analyze Compositions in Compiled Videos? ➡️ 论文标题&#xff1a;VidComposition: Can MLLMs Analyze Compositions in Compiled Videos? ➡️ 论文作者&#xff1a;Yunlong Tang, Junjia Guo, Hang Hua, Susan Liang, Mingqian Feng, Xinya…

基于AR和SLAM技术的商场智能导视系统技术原理详解

本文面对室内定位算法工程师、智慧商场系统开发者、对VR/AR应用开发感兴趣的技术人员&#xff0c;解决如何通过SLAMAR技术破解大型商场室内导航的空间认知壁垒&#xff0c;实现沉浸式导览&#xff0c;本文提供完整技术方案与代码实现。 如需获取商场智能导视系统解决方案请前往…

Debezium日常分享系列之:认识Debezium Operator

Debezium日常分享系列之&#xff1a;认识Debezium Operator什么是Debezium OperatorDebezium Operator 的工作原理Debezium Operator 的优点Debezium Operator 使用场景Debezium Operator 的关键组件部署Debezium OperatorDebezium Operator 的使用什么是Debezium Operator De…

POSIX信号量,环形队列

是一种进程间或线程间同步机制&#xff0c;用于控制多个线程/进程对共享资源的访问&#xff0c;避免并发冲突。可以看作是一个计数器&#xff0c;通过对计数器的操作&#xff08;PV操作&#xff09;实现同步P操作(原子性)&#xff1a;&#xff0d;&#xff0d;&#xff0c;将信…

Python Day6

浙大疏锦行 Python Day6 内容&#xff1a; 描述性统计&#xff08;可视化分析&#xff09;单特征可视化&#xff08;连续、离散&#xff09;特征与标签可视化特征与特征可视化 代码&#xff1a; # TODO: 描述性统计 import pandas as pd import numpy as np import seaborn…

ESP32与树莓派C++、Rust开发实战

C++语言在ESP32、树莓派实例 以下是关于C++语言在ESP32、树莓派等硬件设备上的开发实例汇总,涵盖常见应用场景和代码示例。 ESP32开发实例 LED控制(GPIO操作) 使用ESP32的GPIO控制LED灯,示例代码基于Arduino框架: #include <Arduino.h> const int ledPin = 2; …

Jedis 原生之道:Redis 命令 Java 实现指南(一)

Hi~&#xff01;这里是奋斗的明志&#xff0c;很荣幸您能阅读我的文章&#xff0c;诚请评论指点&#xff0c;欢迎欢迎 ~~ &#x1f331;&#x1f331;个人主页&#xff1a;奋斗的明志 &#x1f331;&#x1f331;所属专栏&#xff1a;Redis &#x1f4da;本系列文章为个人学习笔…

飞算 JavaAI 开发助手:深度学习驱动下的 Java 全链路智能开发新范式

飞算 JavaAI 开发助手&#xff1a;深度学习驱动下的 Java 全链路智能开发新范式 文章目录飞算 JavaAI 开发助手&#xff1a;深度学习驱动下的 Java 全链路智能开发新范式前言飞算 JavaAI IDEA插件下载、注册、使用智能引导操作流程Java Chat智能工作流程操作流程智能问答操作流…

Spring Boot 核心特性与版本演进解析

深度解读自动配置原理、版本差异与 3.x 的颠覆性变革 一、Spring Boot 的核心理念与迭代主线 Spring Boot 用两大核心武器重构了 Java 开发范式&#xff1a; 嵌入式容器&#xff1a;终结了 “war 包 Tomcat 配置地狱”&#xff0c;让 java -jar 成为生产级部署的标准姿势自动…