【答疑释惑】main函数的参数是哪里传递来的

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

这个参数是哪里传递来的?

C/C++语言中的main函数,经常带有参数argc,argv,如下:

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

这两个参数的作用: argc 是指命令行输入参数的个数(以空白符分隔) argv存储了所有的命令行参数。

1.通过命令行运行

假如你的程序是Helloworld.exe,在cmd命令行运行时,增加参数即可:

Helloworld.exe hello

hello即为参数。

2.通过vs设置传递

右键项目->属性->配置属性->调试->命令行参数

3.快捷方式添加

右键点击可执行程序的快捷方式,属性->目标。在路径最后添加即可。

PS:

请问这里为什么要设置这两个参数呢?不要不行吗?

有些时候程序运行时需要提供一些参数。比如copy命令,需要指明源文件和目标文件名,就得通过argc和argv来传递。

为什么第二个形参参数要用指针数组?

由于命令行中的字符串的长度事先并不知道,而且各个参数字符串的长度一般也并不相同,因此只有用指针数组能够比较好地满足上述要求,可以从这里体会指针数组的用处。


原文发布于微信公众号 - 程序员互动联盟(coder_online)

原文发表时间:2015-08-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏数说戏聊

05.记录合并&字段合并&字段匹配1.记录合并2.字段合并3.字段匹配3.1 默认只保留连接上的部分3.2 使用左连接3.3 使用右连接3.4 保留左右表所有数据行

将两个结构相同的数据框合并成一个数据框。 函数concat([dataFrame1, dataFrame2, ...])

762
来自专栏纯洁的微笑

jvm系列(一):java类的加载机制

1、什么是类的加载 类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个 java.lang.Cl...

3766
来自专栏北京马哥教育

一篇文章学会shell工具篇之sed

? sed工具执行原理; 有关sed的参数及action的常见操作方法; 定址; 模式空间和保持空间; 使用标签 1.首先先来了解一下什么是sed? sed叫...

3087
来自专栏服务端技术杂谈

Golang笔记

静态编译 编译时一个将源代码翻译成低级语言的过程。编译过程比较慢,在设计Go时,编译速度是主要的设计目标之一。静态类型意味着变量必须指定一个类型,如整形,字符串...

2914
来自专栏前端杂货铺

内置对象,原生对象和宿主对象

js内置对象是ECMAScript规范中要求实现的一些函数和对象,具体包括Object,Function,Number,Boolean,Array, Strin...

2815
来自专栏ml

jsp基础知识(基本的语法及原理)

     jsp 语法分为三种不同的类型: (1)  编译器指令: 类如: <%@ page import="java.io.*"%> (2)  脚本语法:  ...

2764
来自专栏小灰灰

Java 线程学习

Java 线程相关 如何创建线程(两种方式,区别,使用场景) 线程状态调度 多线程数据共享(会有什么问题,如何实现共享,多线程操作同一个变量会有什么问题,如果不...

2089
来自专栏专注 Java 基础分享

虚拟机类加载机制

虚拟机把字节码文件从磁盘加载进内存的这个过程,我们可以粗糙的称之为「类加载」,因为「类加载」不仅仅是读取一段字节码文件那么简单,虚拟机还要进行必要的「验证」、「...

4557
来自专栏学习有记

Python traceback 获取详细的异常信息

1115
来自专栏Leetcode名企之路

jvm类加载机制

类从被加载到虚拟机内存中开始,到卸载出内存为止,它的整个生命周期包括:加载、验证、准备、解析、初始化、使用和卸载七个阶段。

913

扫码关注云+社区