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

C语言:main函数的命令行传参

一直以来通常情况下我们编写C语言程序都是这样的:

但其实一个完整的main函数是如下定义的

    main 函数中有两个参数,分别是 argc 和 argv。但是在 C 语言中规定,main 函数是不能被别的函数调用的,那究竟是谁传递了参数给main 函数呢?

答案是:命令行


     当我们在命令执行程序时,其实就是在给main 函数传递参数。其中 argc 的全称是 argument count,即命令行的参数的数目。 argv 的全称是 argument value,即命令行的参数对应的值。

     argc的值是我们输入的参数个数+1

 

  懒得开虚拟机,我们就在Windows环境下来试验一下

#include <bits/stdc++.h>
#include <cstring>
#include<string>
using namespace std;

int main(int argc, char *argv[])
{
    cout<<"argc = "<<argc<<endl;
    return 0;
}

编译此程序,执行程序结果是:

 

        那么再来看看这个 argv,类型是 char *[],这个是一个字符指针数组,通俗一点来讲,就是一个数组名字叫 argv,并且数组中放着很多个字符串,就是从命令行传入的参数的值,argc就是argv的元素个数

我们再通过程序来验证一下:

#include <bits/stdc++.h>
#include <cstring>
#include<string>
using namespace std;

int main(int argc, char *argv[])
{
    cout<<"argc = "<<argc<<endl;
    for(int i=0;i<argc;++i)
        cout<<argv[i]<<endl;
    return 0;
}

编译此程序,执行程序结果是:

可以看到它把shi也存到argv[0]中了。

相关文章:

  • ini文件和inf文件的区别
  • Windows系统常见的文件系统格式(FAT, NTFS, ExFAT)
  • 字符串编码(ASCII, GBK, ANSI, Unicode(‘\u‘), UTF-8编码)
  • Python网络爬虫与信息提取(三):网络爬虫之提取(Beautifulsoup bs4)
  • 查看win10系统日志
  • Windows安全模板配置
  • Python网络爬虫与信息提取(四):网络爬虫之实战(淘宝商品比价 股票数据)
  • Python—Scrapy爬虫框架
  • 大数据技术原理与应用(一):大数据概述
  • 大数据技术原理与应用(二):大数据处理架构Hadoop
  • 大数据技术原理与应用(三):分布式文件系统HDFS
  • Ubuntu18.04安装 Codeblocks
  • Win10将某个软件/文件添加到开始屏幕(磁贴)
  • phpStudy(LAMP)
  • Win10创建新用户账户
  • android图片蒙层
  • HTTP中的ETag在移动客户端的应用
  • Java 多线程编程之:notify 和 wait 用法
  • Java 内存分配及垃圾回收机制初探
  • Javascripit类型转换比较那点事儿,双等号(==)
  • JavaScript 无符号位移运算符 三个大于号 的使用方法
  • PHP 7 修改了什么呢 -- 2
  • UEditor初始化失败(实例已存在,但视图未渲染出来,单页化)
  • vue.js框架原理浅析
  • vue学习系列(二)vue-cli
  • Web Storage相关
  • XML已死 ?
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 案例分享〡三拾众筹持续交付开发流程支撑创新业务
  • 程序员该如何有效的找工作?
  • 如何选择开源的机器学习框架?
  • #Linux(Source Insight安装及工程建立)
  • (9)目标检测_SSD的原理
  • (function(){})()的分步解析
  • (HAL)STM32F103C6T8——软件模拟I2C驱动0.96寸OLED屏幕
  • (顺序)容器的好伴侣 --- 容器适配器
  • (四)JPA - JQPL 实现增删改查
  • (转载)在C#用WM_COPYDATA消息来实现两个进程之间传递数据
  • ***利用Ms05002溢出找“肉鸡
  • .bat批处理(六):替换字符串中匹配的子串
  • .net6Api后台+uniapp导出Excel
  • .NET轻量级ORM组件Dapper葵花宝典
  • @Valid和@NotNull字段校验使用
  • @zabbix数据库历史与趋势数据占用优化(mysql存储查询)
  • [100天算法】-目标和(day 79)
  • [20190416]完善shared latch测试脚本2.txt
  • [BIZ] - 1.金融交易系统特点
  • [BUUCTF 2018]Online Tool
  • [BZOJ 1040] 骑士
  • [C#]OpenCvSharp使用帧差法或者三帧差法检测移动物体
  • [C/C++]数据结构----顺序表的实现(增删查改)
  • [Firefly-Linux] RK3568修改控制台DEBUG为普通串口UART
  • [FTP]pureftp部署和优化
  • [github全教程]github版本控制最全教学------- 大厂找工作面试必备!
  • [HNOI2008]水平可见直线