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函数的形式参数,可以满足这种需要。
发表评论
-
set容器的反向迭代器
2013-05-02 16:56 3743#include <iostream> #in ... -
对于CRITICAL_SECTION用法的介绍和理解[转]
2013-04-08 11:50 2181很多人对CRITICAL_SECTION ... -
二维数组知识
2012-09-15 17:20 816二维数组和指针⑴ 用 ... -
Realloc的使用
2012-08-14 11:04 830realloc 用过很多次了。 ... -
extern C的由来
2012-08-09 10:14 696时常在cpp的代码之中看到这样的代码: #ifdef ... -
C++类对象的创建过程
2012-07-26 16:02 939分配空间(Allocation) ... -
静态数据成员和静态成员函数
2012-07-26 15:04 3111静态类成员包括静态数据成员和静态函数成员两部分。 与 ... -
复制构造函数(拷贝构造函数)以及深浅拷贝
2012-07-25 22:39 1429对于普通对象而言复制是很简单的,一般是将变量或者常量赋值给某 ... -
cin、cin.get、cin.getline()、getline()、gets()的用法【转】
2012-07-24 20:05 831学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了 ... -
编程笔记(07-24)
2012-07-24 15:15 6681 #include < stdio.h ... -
堆、栈解疑
2012-07-12 21:53 586一、预备知识—程序的内存分配 一个由C/C++编译的程序 ... -
指针和内存分配的深度理解
2012-07-12 18:57 1031一 :关于指针和堆的内存分配 先来介绍一下指针: 指针一种 ... -
数组指针和指针数组
2012-07-12 18:56 1187先看一下基本的形式,我们从这里起步! ----------- ... -
const指针和指向const的指针
2012-07-12 10:30 2120指向const对象的指针 ... -
typedef的学习
2012-07-11 15:03 739typedef,顾名思义,为“类型定义”,可以解释为:将一种数 ... -
函数指针和指针函数
2012-07-11 11:21 595【函数指针】 ... -
Define学习
2012-07-11 10:12 1073宏替换是C/C++系列语言的技术特色,C/C++语言提 ... -
sizeof 深研
2012-07-11 09:39 6681、什么是sizeof 首先看一下sizeof ... -
内存对齐问题
2012-07-10 22:35 10971.内存数据对齐的原因: 无论如何,为了提高程序的性 ... -
指针深究
2012-07-09 21:55 594在说指向指针的指针之前,不得不说指向变量的指针。先看如下示例: ...
相关推荐
然而,我们可以为`main()`函数添加参数,使其具有接收外部输入的能力。主要有两种形式: 1. 接收命令行参数:`int main(int argc, char* argv[])` 在这种形式中,`argc`表示命令行参数的总数(包括程序本身的名称...
当我们谈论`main()`函数的两个参数`argc`和`argv`时,我们实际上是在讨论如何处理命令行参数。这些参数是在程序启动时由操作系统传递给程序的,通常在DOS或类DOS环境下。 `argc`(Argument Count)是一个整数,它...
main 函数传递参数 main 函数是 C/C++ 语言中的入口函数,即程序的开始执行点。在控制台程序中,main 函数可以接收参数,这些参数可以来自操作系统的命令行。了解 main 函数的参数传递机制对编写控制台程序非常重要...
当我们谈论“带参数的main函数”,通常是指在`main`函数中接收命令行参数的能力。这些参数是在程序启动时通过操作系统传递给程序的,允许开发者在不修改代码的情况下,对程序的行为进行一定程度的控制或传递数据。 ...
该程序是我写的博客“一起talk C栗子吧(第五十七回:C语言实例--main函数的参数)”的配套程序,共享给大家使用
在标题“main函数的两个参数”中提到的,实际上是指`main`函数可以接受两个参数,这是一个在标准C/C++中不常用但仍然合法的特性。通常我们看到的`main`函数定义可能是这样的: ```c int main() { // 程序代码 } ``...
标题“带参数的main函数”指的是第二种形式,即带有参数的`main`函数,它接收两个参数:`argc`(argument count)和`argv`(argument vector)。这两个参数在程序启动时由操作系统提供,用于传递命令行参数。 **`...
在Android Studio中,通常我们开发的是Android应用程序,它们的核心入口点是`Activity`类的`onCreate()`方法,而非Java程序中的`main()`函数。然而,如果你需要在Android Studio中测试独立的Java类,比如包含`main()...
5.保证无毒 1.简单,方便,实用 3.实例可以自行改用 1.如有非法,本人无法律责任,由改动代码人负责! 8.需要更多本人作品,查找标签“朱建强” 7.请下载,杀毒后再使用! 4.如果需要联系我请看左边数字!...
通常情况下,`main()`函数没有参数或者带有两个参数:`argc`和`argv[]`。这两个参数在处理命令行参数时尤为重要。本文将详细介绍`main()`函数及其参数`argc`和`argv[]`的用法,并通过具体的实例展示如何在实际编程中...
### C语言面试题:Main函数详解 #### 题目背景 在C语言编程中,`main`函数是每个程序的入口点。正确理解和编写`main`函数对于编写高质量、可移植性强的程序至关重要。本篇文章将深入探讨C语言中的`main`函数,包括...
本文将深入探讨“带参数的函数”这一主题,这是C语言中的一个关键概念,它允许我们创建可重用的代码块,通过传递不同参数来执行不同的任务。在"6.4 带参数的函数"这个项目中,我们将通过实例来理解如何定义、调用...
当一个程序启动时,操作系统会调用`main`函数,并传递两个参数:`argc`和`argv`。这两个参数提供了对命令行输入参数的访问,使得程序能够根据用户在启动时提供的参数来改变其行为。 `argc`(argument count)是一个...
在C语言中,函数参数的传递主要有三种方式:值传递、地址传递和引用传递。这三种方式各自有不同的特性和应用场景,理解它们的工作原理对于编写高效和正确的程序至关重要。 1. 值传递(Value Passing) 值传递是最...
main 函数的参数是一个字符串数组,即 String[] args,这是因为字符串类型的参数可以表示任何类型的参数,而其他类型的参数则不能。例如,命令行参数 "jack" 和 "100" 可以被解释为字符串,但不能被解释为整数或...
Main 函数调用子函数堆栈解析 在计算机程序设计中,函数调用是最基本的编程单元。函数调用会在内存中创建一个新的堆栈帧,该堆栈帧用于存放函数的实参、局部变量和返回地址等信息。在这个过程中,main 函数如何调用...
标签提到了 "gtest头文件与main函数",这暗示了资源中可能包括了 `gtest` 的核心库头文件(如 `gtest/gtest.h`)以及一个简单的 `main.cpp` 文件,里面可能只有基本的测试框架设置,但没有具体的测试用例。...
当我们谈论"main函数源码-战舰开发板"时,我们很可能指的是一个特定的嵌入式系统项目,其中`main`函数是针对某种叫做“战舰开发板”的硬件平台编写的。这个开发板可能是用于教育、实验或者产品原型设计,它集成了微...
`__libc_start_main`会设置好所有必要的参数,并最终调用用户定义的`main`函数。 #### `main`函数的执行 一旦所有的前期准备工作完成,`main`函数将被调用。在`main`函数内部,程序员可以实现自己的业务逻辑,与...
6.9 节位置和关键字参数:函数可以带有位置参数和关键字参数。位置参数是根据参数的顺序来分配的,而关键字参数是根据参数的名称来分配的。 6.10 节函数的调用:函数可以使用位置参数和关键字参数来调用。 6.11 节...