`
蒙面考拉
  • 浏览: 160619 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

带参数的main函数

 
阅读更多
main(int argc, char *argv[])就是为了让程序里面能使用参数,argc是argument count的缩写,表示参数的个数,argv是argument value的缩写,表示参数的值。

在以前的例子中,main函数的形式参数列表都是空的。实际上,main函数也可以带参数。带参数main函数的定义格式如下:
void main(int argc, char *argv[])
{
... ...
}
argc和argv是main函数的形式参数。这两个形式参数的类型是系统规定的。如果main函数要带参数,就是这两个类型的参数;否则main函数就没有参数。变量名称argc和argv是常规的名称,当然也可以换成其他名称。
那么,实际参数是如何传递给main函数的argc和argv的呢?我们知道,C程序在编译和链接后,都生成一个exe文件,执行该exe文件时,可以直接执行;也可以在命令行下带参数执行,命令行执行的形式为:
可执行文件名称 参数1 参数2 ... ... 参数n
可执行文件名称和参数、参数之间均使用空格隔开。例如,我们在DOS下运行copy c:\test.txt d:\test.txt,可执行文件名称为copy,参数1为字符串“c:\test.txt”,参数2为“d:\test.txt”。结果copy命令将c:\test.txt拷贝到d盘,目标文件取为test.txt。
如果按照这种方法执行,命令行字符串将作为实际参数传递给main函数。具体为:
(1) 可执行文件名称和所有参数的个数之和传递给argc;
(2) 可执行文件名称(包括路径名称)作为一个字符串,首地址被赋给argv[0],参数1也作为一个字符串,首地址被赋给argv[1],... ...依次类推。
例如,现在运行命令行(test是编译后的exe文件名称):
C:\TC\test how are you
那么test工程的main函数参数argc=4;
argv[0]将保存字符串"C:\TC\test"的首地址;
argv[1]将保存字符串"how"的首地址;
argv[2]将保存字符串"are"的首地址;
argv[3]将保存字符串"you"的首地址;
下面的例子打印所有的argv参数:
main(int argc, char *argv[])
{
int i;
printf("\nTotal %d arguments",argc);
for(i=0;i<argc;i++)
{
printf("\nArgument %d = %s ",i+1, argv[i]);
}
}
如果编译后的exe文件名称为test,在DOS下运行C:\TC\test how are you,结果输出:
Total 4 arguments
Argument 1 = C:\TC\test.exe
Argument 2 = how
Argument 3 = are
Argument 4 = you
我们也可以在调试状态下输入命令行参数,方法是:
在TurboC的Options菜单下有一个子菜单Arguments,选择该项并确定,弹出输入窗口;在输入窗口键入命令行参数即可。比如要调试上述的test,可以在输入窗口键入how are you。在调试过程中,可执行文件名称和参数字符串将被传递给main函数的形式参数。
在DOS系统下,人们常常希望在运行exe的同时,传递一些有用的信息。例如copy.exe,运行时将源文件名称和目的文件名称作为参数传入。利用指针数组argv作为main函数的形式参数,可以满足这种需要。

分享到:
评论

相关推荐

    带参数的MAIN函数学习

    然而,我们可以为`main()`函数添加参数,使其具有接收外部输入的能力。主要有两种形式: 1. 接收命令行参数:`int main(int argc, char* argv[])` 在这种形式中,`argc`表示命令行参数的总数(包括程序本身的名称...

    关于main函数两个参数

    当我们谈论`main()`函数的两个参数`argc`和`argv`时,我们实际上是在讨论如何处理命令行参数。这些参数是在程序启动时由操作系统传递给程序的,通常在DOS或类DOS环境下。 `argc`(Argument Count)是一个整数,它...

    main函数传递参数

    main 函数传递参数 main 函数是 C/C++ 语言中的入口函数,即程序的开始执行点。在控制台程序中,main 函数可以接收参数,这些参数可以来自操作系统的命令行。了解 main 函数的参数传递机制对编写控制台程序非常重要...

    带参数的main函数2.zip

    当我们谈论“带参数的main函数”,通常是指在`main`函数中接收命令行参数的能力。这些参数是在程序启动时通过操作系统传递给程序的,允许开发者在不修改代码的情况下,对程序的行为进行一定程度的控制或传递数据。 ...

    C例子:main函数的参数

    该程序是我写的博客“一起talk C栗子吧(第五十七回:C语言实例--main函数的参数)”的配套程序,共享给大家使用

    main函数的两个参数

    在标题“main函数的两个参数”中提到的,实际上是指`main`函数可以接受两个参数,这是一个在标准C/C++中不常用但仍然合法的特性。通常我们看到的`main`函数定义可能是这样的: ```c int main() { // 程序代码 } ``...

    带参数的main函数.zip

    标题“带参数的main函数”指的是第二种形式,即带有参数的`main`函数,它接收两个参数:`argc`(argument count)和`argv`(argument vector)。这两个参数在程序启动时由操作系统提供,用于传递命令行参数。 **`...

    Android studio 运行main 函数的方法

    在Android Studio中,通常我们开发的是Android应用程序,它们的核心入口点是`Activity`类的`onCreate()`方法,而非Java程序中的`main()`函数。然而,如果你需要在Android Studio中测试独立的Java类,比如包含`main()...

    Qt中使用main函数中的参数.rar

    5.保证无毒 1.简单,方便,实用 3.实例可以自行改用 1.如有非法,本人无法律责任,由改动代码人负责! 8.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用! 4.如果需要联系我请看左边数字!...

    C++_main()函数及其参数

    通常情况下,`main()`函数没有参数或者带有两个参数:`argc`和`argv[]`。这两个参数在处理命令行参数时尤为重要。本文将详细介绍`main()`函数及其参数`argc`和`argv[]`的用法,并通过具体的实例展示如何在实际编程中...

    c语言面试题----main函数

    ### C语言面试题:Main函数详解 #### 题目背景 在C语言编程中,`main`函数是每个程序的入口点。正确理解和编写`main`函数对于编写高质量、可移植性强的程序至关重要。本篇文章将深入探讨C语言中的`main`函数,包括...

    6.4 带参数的函数 Project2.zip

    本文将深入探讨“带参数的函数”这一主题,这是C语言中的一个关键概念,它允许我们创建可重用的代码块,通过传递不同参数来执行不同的任务。在"6.4 带参数的函数"这个项目中,我们将通过实例来理解如何定义、调用...

    OpenCV main函数的参数用法

    当一个程序启动时,操作系统会调用`main`函数,并传递两个参数:`argc`和`argv`。这两个参数提供了对命令行输入参数的访问,使得程序能够根据用户在启动时提供的参数来改变其行为。 `argc`(argument count)是一个...

    函数参数的传递

    在C语言中,函数参数的传递主要有三种方式:值传递、地址传递和引用传递。这三种方式各自有不同的特性和应用场景,理解它们的工作原理对于编写高效和正确的程序至关重要。 1. 值传递(Value Passing) 值传递是最...

    java中main函数解析.docx

    main 函数的参数是一个字符串数组,即 String[] args,这是因为字符串类型的参数可以表示任何类型的参数,而其他类型的参数则不能。例如,命令行参数 "jack" 和 "100" 可以被解释为字符串,但不能被解释为整数或...

    main函数调用子函数堆栈解析

    Main 函数调用子函数堆栈解析 在计算机程序设计中,函数调用是最基本的编程单元。函数调用会在内存中创建一个新的堆栈帧,该堆栈帧用于存放函数的实参、局部变量和返回地址等信息。在这个过程中,main 函数如何调用...

    gtest的框架,已经写好了一个main函数

    标签提到了 "gtest头文件与main函数",这暗示了资源中可能包括了 `gtest` 的核心库头文件(如 `gtest/gtest.h`)以及一个简单的 `main.cpp` 文件,里面可能只有基本的测试框架设置,但没有具体的测试用例。...

    main函数源码

    当我们谈论"main函数源码-战舰开发板"时,我们很可能指的是一个特定的嵌入式系统项目,其中`main`函数是针对某种叫做“战舰开发板”的硬件平台编写的。这个开发板可能是用于教育、实验或者产品原型设计,它集成了微...

    main函数之前与之后

    `__libc_start_main`会设置好所有必要的参数,并最终调用用户定义的`main`函数。 #### `main`函数的执行 一旦所有的前期准备工作完成,`main`函数将被调用。在`main`函数内部,程序员可以实现自己的业务逻辑,与...

    第六章Python函数习题及答案--中文

    6.9 节位置和关键字参数:函数可以带有位置参数和关键字参数。位置参数是根据参数的顺序来分配的,而关键字参数是根据参数的名称来分配的。 6.10 节函数的调用:函数可以使用位置参数和关键字参数来调用。 6.11 节...

Global site tag (gtag.js) - Google Analytics