What does int main(int argc, char *argv[]) mean?
忽然发现自己不理解许多代码中这行的含义是什么。。。(汗颜)
下面贴一段stackoverflow上面的回答:
argv and argc are how command line arguments are passed to main() in C and C++.
argc will be the number of strings pointed to by argv. This will (in practice) be 1 plus the number of arguments, as virtually all implementations will prepend the name of the program to the array.
The variables are named argc (argument count) and argv (argument vector) by convention, but they can be given any valid identifier: int main(int num_args, char** arg_strings) is equally valid.
They can also be omitted entirely, yielding int main(), if you do not intend to process command line arguments.
Try the following program:
#include <iostream>
int main(int argc, char** argv) {
std::cout << "Have " << argc << " arguments:" << std::endl;
for (int i = 0; i < argc; ++i) {
std::cout << argv[i] << std::endl;
}
}
Running it with ./test a1 b2 c3 will output:
Have 4 arguments:
./test
a1
b2
c
int main(int argc, char *argv[])是Linux和Unix中的标准写法,在命令行中传参数这样可以接收参数,argc表示后面的参数个数+1(这里的加1代表程序运行的全路径名或程序的名字,如上面代码输出的./test),argv为参数的字符串数组的指针。int main()则当不传入参数时使用。
但是还有一种写法:int main(int argc, char* argv[], char* envp[]),后面的char* envp[]是用来取得系统的环境变量
如图为test.cpp代码:

编译,链接后执行可得

What does int main(int argc, char *argv[]) mean?的更多相关文章
- main(int argc, char **argv)参数解读
main(int argc, char **argv)参数解读 编译生成了test.exe ,然后在控制台下相应的目录下输入:test 1 2 3 4 argc就是一个输入了多少个参数,包括te ...
- int main( int argc, char **argv)
1.参数 (有时参数是void) argc是程序运行时参数个数 argv是存储参数的数组,可以用char* argv[],也可以用char **argv. 例如编译一个hello.c的程序 1 #in ...
- int main(int argc,char* argv[])详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数命令行后面跟的用户输入的参数, 比如: int main(int argc, ...
- int main(int argc, char * argv[]) 里的异常处理
#import <UIKit/UIKit.h> #import "AppDelegate.h" int main(int argc, char * argv[]) { ...
- main(int argc,char *argv[])
#include<iostream.h> //ECHO.CPP void main(int argc,char *argv[]) { ;i<argc;i++)cout<< ...
- int main(int argc,char* argv[])参数详解
argc是命令行总的参数个数 argv[]是argc个参数,其中第0个参数是程序的全名,以后的参数 命令行后面跟的用户输入的参数,比如: int main(int argc, char* argv[] ...
- int main(int argc,char* argv[]) 简单理解
(1)第一个int代表整个main函数的返回值,若函数正常执行完毕,返回0,异常返回则是-1 (2)int argc代表命令行参数的总个数,既然是个数,那就是整型的,即:int; (3)char* a ...
- main()函数的输入参数 main(int argc, char** argv)
一般简单的C++程序,main函数的写法都是 int main() {... ; return 0;},但是,如果在运行程序时需要有参数输入,可以是使用将主函数写成int main(int argv, ...
- main(int argc , char *argv[])
#include <unistd.h>#include <stdlib.h>#include <stdio.h> int main(int argc, char * ...
- [c language] getopt 其参数optind 及其main(int argc, char **argv) 参数解释
getopt被用来解析命令行选项参数.#include <unistd.h> extern char *optarg; //选项的参数指针extern int optind, //下一次调 ...
随机推荐
- 前端-jQuery 查找标签 事件 Bootstrap页面框架
1.查找标签 1.基本选择器: $('#d1'):id选择器 $('.c1'):class选择器 $('div'):标签选择器 2.组合选择器: $('div#d1'):查找id为d1的div标签 $ ...
- 艰难的 debug 经历,vscode 无法获取远程环境 ssh 报错,windows 11 ssh
背景介绍 要做系统结构实验,学校和华为云合作使用华为云的 aarch64 裸机,需要使用 ssh 远程开发,笔者为了追求良好的开发体验,决定使用 vscode 开发,实验环境配置过程中遇到了两个问题, ...
- .NET 和 .NET Core 使用 JWT 授权验证
JWT介绍 参考文章 https://www.cnblogs.com/cjsblog/p/9277677.html 一..NET 中使用 1. NuGet包 搜索JWT,下载安装(本人用的是8.2.3 ...
- .NET NPOI导出时间、公式等格式化
1.业务背景 做导入某业务模块的Excel表格文件时,利用NPOI组件导入, ① 导入的日期错乱(如XX-X月-2022),关于此种情况之前没做格式化做了单独处理,可以查看文章.net NPOI Ex ...
- Portainer功能使用之开启远程访问
配置远程连接Docker服务 1.配置 说明:docker默认没有打开"2375"端口,需要先进行配置开启端口 命令 修改配置:vim /usr/lib/systemd/syste ...
- reids(2)概述与安装
前言 redis安装在Linux服务器上,系统为centos7,安装的版本为redis6.2.10 下载与安装 下载地址:https://redis.io/download/#redis-downlo ...
- html+css+js实现一个简易日历
0.效果预览 只实现了日历最基础的功能,当前日期红色显示,可通过上方的左右按钮查看上一月或下一月的日期. 1.HTML部分 1 <body> 2 <div id="cldF ...
- LKWA靶机学习
LKWA靶机学习 目录 LKWA靶机学习 1 下载地址 2 Blind RCE 2.1 利用Burpsuite Collaborato模块来查看输出. 2.2 尝试利用dnslog进行回显 3 XSS ...
- Os-Hax
Os-Hax 目录 Os-Hax 1 信息收集 1.1 端口扫描 1.2 后台目录扫描 1.2.1 目录分析 2 反弹Shell 3 提权 3.1 尝试提权 3.2 收集当前系统信息 3.3 利用su ...
- Pdfjs第三方插件使用
项目中时常会遇到在线预览PDF文件的需求,网上一找也能找到很多,但被使用率高的并不多,经过多次实验发现被应该最多的还属pdfjs插件. 首先介绍下:Pdf.js插件是由Mozilla 主导推出的 作用 ...