当前位置: 首页 > news >正文

main函数中两个参数的作用

一般我们在使用C语言时不太用到main函数自带的参数,因此最常见的main函数就像下面这样。

int main()
{......
}

上面这种main函数是省略了其形参的,C语言中规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv,其中,第一个形参argc为整形,第二个参数argv为指向字符串的指针数组。
因此,如果不省略其形参的话,真实的main函数就像下面这样定义。

int main(int argc,char **argv)
{......
}

或者下面这样。

int main(int argc,char *argv[])
{......
}

说清楚这两个参数的类型后,那么它们的功能是什么,或者有什么用处。
先看下面一个例子。

#include <stdio.h>int main(int argc, char **argv)
{printf("argc = %d\n",argc);printf("argv[0] = %s\n",argv[0]);printf("argv[1] = %s\n",argv[1]);
}

写好这个C程序后,在终端使用下面的命令将其编译为可执行文件。

gcc filename.c -o filename

然后执行这个可执行文件,执行结果如下图所示。
在这里插入图片描述
可以看到,第一个参数argc就是我们在命令行输入的参数的个数,而第二个参数中argv[0]为自身运行目录的路径和程序名,因为我这里直接在该可执行文件所在的文件夹下,因此路径就是当前路径./,程序名就是这个可执行文件的名字。第一次我们只是执行了该文件,并没有传入参数,因此argv[1]就是null的,再往后,我们在./a后再加一个用户输入的参数,那么这个参数就被传到了argv[1]里面了。
优化一下这个程序,代码如下。

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

这样不管我们在执行这个文件时传入多少个参数,各个参数的值都会帮我们打印出来。
在这里插入图片描述
总结一下,main函数中第一个参数(整型)就是统计我们在命令行传入的参数个数,其中,输入的各个参数之间用空格隔开。第二个参数(字符指针数组)是存放用户输入的,下标为0的存放的是可执行文件的路径及名称,大于0的下标存放的参数都是由用户输入的。这些由用户在命令行输入的值在程序里是直接可以使用的,例如argv[1]=1,然后在程序中将用户输入的这个参数通过write函数写入,那么它就可以控制某个设备打开或者关闭,大致就是这个用法。因此,合理的使用main函数中的这两个参数,可以更好的帮我们达成目的。

相关文章:

main函数中两个参数的作用

一般我们在使用C语言时不太用到main函数自带的参数&#xff0c;因此最常见的main函数就像下面这样。 int main() {...... }上面这种main函数是省略了其形参的&#xff0c;C语言中规定main函数的参数只能有两个&#xff0c;习惯上这两个参数写为argc和argv&#xff0c;其中&…...

华为OD机试 - 连续字母长度 - 字符串(Java 2023 B卷 100分)

目录 专栏导读一、题目描述二、输入描述三、输出描述1、输入2、输出3、说明4、再输入5、输出6、说明 四、解题思路五、Java算法源码六、效果展示1、输入2、输出3、说明 华为OD机试 2023B卷题库疯狂收录中&#xff0c;刷题点这里 专栏导读 本专栏收录于《华为OD机试&#xff08…...

想要精通算法和SQL的成长之路 - 填充书架

想要精通算法和SQL的成长之路 - 填充书架 前言一. 填充书架1.1 优化 前言 想要精通算法和SQL的成长之路 - 系列导航 一. 填充书架 原题链接 题目中有一个值得注意的点就是&#xff1a; 需要按照书本顺序摆放。每一层当中&#xff0c;只要厚度不够了&#xff0c;当前层最高…...

【ROS入门】ROS的核心概念

文章结构 通信机制节点(Node)——执行单元节点管理器(ROS Master)——控制中心话题通信——异步通信机制话题(Topic)消息(Message)——话题数据 服务通信——同步通信机制服务(Service) 话题和服务的区别参数(Parameter)——全局共享字典 文件系统功能包&#xff08;Package&am…...

Python爬虫从端到端抓取网页

网页抓取和 REST API 简介 网页抓取是使用计算机程序以自动方式从网站提取和解析数据的过程。这是创建用于研究和学习的数据集的有用技术。虽然网页抓取通常涉及解析和处理 HTML 文档&#xff0c;但某些平台还提供 REST API 来以机器可读格式&#xff08;如 JSON&#xff09;检…...

这10款类似Stable Diffusion的ai绘图软件,你了解多少?

Stable Diffusion这款ai软件有哪些可以替代的软件&#xff1f;好用的类似Stable Diffusion的ai软件推荐&#xff0c;那么今天就跟着赞奇云工作站小编一起来看看吧。 什么是Stable Diffusion&#xff1f; 称为“Stable Diffusion”的文本到图像模型可以将任何文本转换为逼真、…...

部署ik分词器

部署ik分词器 案例版本&#xff1a;elasticsearch-analysis-ik-8.6.2 ​ ES默认自带的分词器对中文处理不够友好&#xff0c;创建倒排索引时可能达不到我们想要的结果&#xff0c;然而IK分词器能够很好的支持中文分词 ​ 因为是集群部署&#xff0c;所以每台服务器中的ES都需…...

基于STM32+华为云IOT设计的智能垃圾桶

一、项目介绍 在商业街、小吃街和景区等人流密集的场所&#xff0c;垃圾桶的及时清理对于提供良好的游客体验至关重要。然而&#xff0c;传统的垃圾桶清理方式通常是定时或定期进行&#xff0c;无法根据实际情况进行及时响应&#xff0c;导致垃圾桶溢满&#xff0c;影响环境卫…...

板子接线图

1.ST-LINK V2接线 2.对抗板子刷蓝牙固件 接USB转TTL&#xff0c;用镊子短接两个孔 2.对抗板子用串口测试蓝牙AT命令 短接白色箭头&#xff0c;接TX&#xff0c;RX&#xff0c;电源...

Python练习之选择与循环

目录 1、编写程序&#xff0c;运行后用户输入4位整数作为年份&#xff0c;判断其是否为闰年。提示&#xff1a;如果年份能被400整除&#xff0c;则为闰年&#xff1b;如果年份能被4整除但不能被100整除也为闰年。2、编写程序&#xff0c;用户从键盘输入小于 1000 的整数&#x…...

MySQL5.7开启通用日志功能

起因&#xff1a; 因项目数据库占用异常&#xff0c;查询数据库有哪些IP地址连接使用&#xff08;Windows环境下&#xff09;。 操作步骤&#xff1a; 1、修改MySQL服务的my.ini 文件 # 开启通用查询日志 general_log 1 log_output …...

WPF控件模板

在过去&#xff0c;Windows开发人员必须在方便性和灵活性之间做出选择。为得到最大的方便性&#xff0c;他们可以使用预先构建好的控件。这些控件可以工作的足够好&#xff0c;但可定制性十分有限&#xff0c;并且几乎总是具有固定的可视化外观。偶尔&#xff0c;某些控件提供了…...

vue移动端页面适配

页面的适配&#xff0c;就是一个页面能在PC端正常访问&#xff0c;同时也可以在移动端正正常访问。 现在我们可以通过弹性布局【Flexible布局】、媒体查询和响应式布局。除此之外&#xff0c;还可以通过rem和vw针对性地解决页面适配问题。 响应式布局 响应式布局的核心&…...

Ei Scopus 双检索 |第三届信息与通信工程国际会议国际会议(JCICE 2024)

会议简介 Brief Introduction 2024年第三届信息与通信工程国际会议国际会议(JCICE 2024) 会议时间&#xff1a;2024年5月10日-12日 召开地点&#xff1a;中国福州 大会官网&#xff1a;JCICE 2024-2024 International Joint Conference on Information and Communication Engin…...

ChatGPT实战-Embeddings打造定制化AI智能客服

本文介绍Embeddings的基本概念&#xff0c;并使用最少但完整的代码讲解Embeddings是如何使用的&#xff0c;帮你打造专属AI聊天机器人&#xff08;智能客服&#xff09;&#xff0c;你可以拿到该代码进行修改以满足实际需求。 ChatGPT的Embeddings解决了什么问题&#xff1f; …...

C语言指针,深度长文全面讲解

指针对于C来说太重要。然而&#xff0c;想要全面理解指针&#xff0c;除了要对C语言有熟练的掌握外&#xff0c;还要有计算机硬件以及操作系统等方方面面的基本知识。所以本文尽可能的通过一篇文章完全讲解指针。 为什么需要指针&#xff1f; 指针解决了一些编程中基本的问题。…...

云桌面打开部署在linux的服务特别卡 怎么解决

云桌面打开部署在 Linux 服务器上的服务卡顿可能是由多种因素引起的&#xff0c;包括服务器性能、网络连接、应用程序配置等。以下是一些可能的解决方法&#xff0c;可以帮助您缓解云桌面访问部署在 Linux 服务器上的服务时的卡顿问题&#xff1a; 优化服务器性能&#xff1a; …...

day5ARM

循环点亮三个led灯 方法1 ------------------led.h---------------- #ifndef __LED_H__ #define __LED_H__#define RCC (*(volatile unsigned int *)0x50000A28) #define GPIOE ((GPIO_t *)0x50006000) #define GPIOF ((GPIO_t *)0x50007000)//结构体封装 typedef struct {vo…...

旋转链表-双指针思想-LeetCode61

题目要求&#xff1a;给定链表的头结点&#xff0c;旋转链表&#xff0c;将链表每个节点向右移动K个位置。 示例&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k2 输出&#xff1a;[4,5,1,2,3] 双指针思想&#xff1a; 先用双指针策略找到倒数K的位置&#xff0c;也就是(…...

使用自定义XML配置文件在.NET桌面程序中保存设置

本文将详细介绍如何在.NET桌面程序中使用自定义的XML配置文件来保存和读取设置。除了XML之外&#xff0c;我们还将探讨其他常见的配置文件格式&#xff0c;如JSON、INI和YAML&#xff0c;以及它们的优缺点和相关的NuGet类库。最后&#xff0c;我们将重点介绍我们为何选择XML作为…...

智能体元观察者技能:提升AI自主决策的监控与反思能力

1. 项目概述&#xff1a;一个面向智能体的“元观察者”技能最近在折腾智能体&#xff08;Agent&#xff09;开发&#xff0c;特别是那些需要长期运行、具备一定自主决策能力的应用时&#xff0c;发现一个普遍痛点&#xff1a;智能体在执行任务时&#xff0c;往往“埋头苦干”&a…...

Free List Allocator实现原理:memory-allocators中的通用内存分配器

Free List Allocator实现原理&#xff1a;memory-allocators中的通用内存分配器 【免费下载链接】memory-allocators Custom memory allocators in C to improve the performance of dynamic memory allocation 项目地址: https://gitcode.com/gh_mirrors/me/memory-allocato…...

Model2Vec最佳实践:10个技巧让你的嵌入模型又快又好

Model2Vec最佳实践&#xff1a;10个技巧让你的嵌入模型又快又好 【免费下载链接】model2vec Fast State-of-the-Art Static Embeddings 项目地址: https://gitcode.com/gh_mirrors/mo/model2vec Model2Vec是一个革命性的静态嵌入模型技术&#xff0c;它能将任何句子转换…...

Google Calendar智能安排深度拆解(Gemini原生集成技术白皮书级解析)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Gemini Google Calendar智能安排技术全景概览 Gemini 与 Google Calendar 的深度集成标志着日程管理进入语义理解驱动的新阶段。该能力并非简单调用 API&#xff0c;而是依托 Gemini 模型对自然语言指…...

绩效考核的量化迷思:如何衡量不可直接测量的技术贡献

一、量化绩效考核的困境&#xff1a;软件测试的“隐形”价值在软件行业的绩效考核体系中&#xff0c;量化指标似乎成了“公平”与“高效”的代名词。代码行数、Bug数量、测试用例覆盖率……这些清晰可统计的数字&#xff0c;被当作衡量技术人员贡献的核心标尺。然而&#xff0c…...

NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来

NCCL watchdog timeout 先别只会加 timeout:PyTorch 新出的 Flight Recorder,真正值钱的是能把第一处 collective 分歧揪出来 很多人第一次遇到 NCCL watchdog timeout,第一反应都是三件事:查网络、调大 timeout、怀疑 NCCL 又炸了。这个顺序经常不够用。因为在很多真实训…...

用PTA题库学C语言:手把手教你拆解‘选择与循环’的嵌套逻辑

用PTA题库学C语言&#xff1a;手把手教你拆解‘选择与循环’的嵌套逻辑 学习C语言时&#xff0c;最让初学者头疼的莫过于那些层层嵌套的选择结构和循环结构。面对一堆if-else和for/while语句&#xff0c;很多人会感到无从下手。本文将通过PTA题库中的典型题目&#xff0c;教你一…...

Cadence 17.4 保姆级教程:从DRC检查到Gerber输出的完整避坑指南

Cadence 17.4 终极避坑指南&#xff1a;从DRC检查到Gerber输出的全流程实战 第一次使用Cadence Allegro 17.4导出Gerber文件时&#xff0c;那种如履薄冰的感觉至今记忆犹新。记得去年为TMC2300电机驱动模块导出生产文件时&#xff0c;因为一个简单的单位设置错误&#xff0c;导…...

别再死记硬背关键帧了!用Blender 2.83.9的Rigify,带你拆解走路动画的物理原理(附膝跳问题修复)

别再死记硬背关键帧了&#xff01;用Blender 2.83.9的Rigify&#xff0c;带你拆解走路动画的物理原理&#xff08;附膝跳问题修复&#xff09; 当你第一次尝试用Blender制作走路动画时&#xff0c;是否遇到过这样的困境&#xff1a;明明按照教程一步步设置了关键帧&#xff0c;…...

终极跨平台Steam创意工坊下载指南:WorkshopDL让你的模组之旅更简单

终极跨平台Steam创意工坊下载指南&#xff1a;WorkshopDL让你的模组之旅更简单 【免费下载链接】WorkshopDL WorkshopDL - The Best Steam Workshop Downloader 项目地址: https://gitcode.com/gh_mirrors/wo/WorkshopDL 你是否在Epic Games Store或GOG平台购买了心仪的…...