C 中 main 函数的参数

      看到不同的人写出的 C 或者 C++ 程序时,可能会出现不一样的 main 函数的定义,下面的几种定义方式都是对的:

      int main(void)
      int main(int argc)
      int main(int argc, /*const*/ char** argv)
      int main(int argc, /*const*/ char** argv, /*const*/ char** enviorn)

      这几种方式中,第三种方式是最常用的。那么,这些参数代表着什么呢?下面,我就以最后一个定义的形式解释这几个参数的定义:

#include <stdio.h>

/*
	@description:	描述 main 函数的参数以及各个参数的作用
	@parameters:
		argc:运行程序时,输入参数的个数,如果只是输入程序名,那么,argc = 1
		argv:这是一个字符串指针,指向每一个参数
		environ:当前系统的环境变量
*/

int main(int argc, const char** argv, const char** environ)
{
	int i = 0;

	printf("argc : %d\n", argc);

	for (i = 0; i != argc; ++i)
	{
		printf("argv[%d] : %s\n", i, argv[i]);
	}

	for (i = 0; environ[i] != ‘\0‘; ++i)
	{
		printf("environ[%d] : %s\n", i, environ[i]);
	}

	return 0;
}

好吧,编译运行下吧,这里,我为了突出说明 argc 的作用,在参数上加了几个没有用的词,运行截图如下所示:



      既然以上几种定义的形式都对,那么,我们应该选择用什么方式去定义 main 函数呢?这个,没有准确的答案,就是当你需要什么时,你就那样定义。如果你不需要参数,那么,你完全可以把参数列表设置成 void;一般,我们不用最后一种定义,因为,如果我们需要查看环境变量时,有专门的命令实现这种操作。

      如果你不确定应该选择哪一种定义的方式,那么,选择第三种方式是一个不错的选择。

时间: 2024-10-06 22:49:41

C 中 main 函数的参数的相关文章

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

1.首先,想想C/C++在main函数之前和之后会做些什么? 我们看看底层的汇编代码: __start: : init stack; init heap; open stdin; open stdout; open stderr; : push argv; push argc; call _main; (调用 main) : destory heap; close stdin; close stdout; close stderr; : call __exit; 我们可以看到main函数也只是其

c#中main函数为什么要static

假设没有static关键字,那意味着需要用生成一个实例后才可以调用这个main方法,而main方法是程序入口点,你没有进入main方法,自然无法生成一个实例,既然没有实例,那就无法调用main函数,岂不矛盾?所以main函数被设置为static. Main()函数在C#里非常特殊,它是编译器规定的所有可执行程序的入口点.由于其特殊性,对Main()函数我们有以下几条准则: Main()函数必须封装在类或结构里来提供可执行程序的入口点.C#采用了完全的面向对象的编程方式,C#中不可以有像C++那样

C语言中main函数的参数详解

main函数的定义形式  main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个,习惯上这两个参数写为argc和argv.所以C99标准中规定只有以下两种定义方式是正确的: int main(void) //无参形式 int main(int argc, char *argv[]) //有参形式 当然有参形式可以进行演变,所以下面的写法也是正确的(同时变量名是可以更换的): int main(int argc, char **a

main函数的参数

在一些教材中,我们常常可以看到main函数的形式如下:int main(int argc,char* argv[]),这两个参数是干什么的呢?如何传递给main函数呢? 1.含义 首先必须知道,main函数是由系统调用的,在调用的同时传递参数. 例如,在文件file1.c中,有如下内容: #include <stdio.h> int main(int argc,char* argv[]) { printf("exe executed!\n"); } 经过编译后,在工程目录的

main()函数的参数

main()函数的参数: main(int argc,char *argv[],char *envp[]); argc: 表示包含文件名在内的命令行参数的个数. argv[]是指针数:里面存放的全是char *类型,最后放一个NULL字符结尾.argv[]存放的是包含文件名在内的所有命令行参数的首地址. envp[]也是一个指针数组:里面存放的是环境变量,最后以NULL结束. 环境变量:是操作系统的变量.分为用户环境变量和系统环境变量,环境变量相当于给系统或用户设置一些变量.例如:Path变量指

C++ main函数的参数

C++的main函数可以没有输入参数,也可以有输入参数,而且只能有两个参数,习惯上coding如下: int main(int argc, char* argv[]) 或者 int main(int argc, char** argv) 其中,argc = argument count :表示传入main函数的数组元素个数,为int类型,而 argv = argument vector :表示传入main函数的指针数组,为char**类型.第一个数组元素argv[0]是程序名称,并且包含程序所在

main函数的参数(int argc,char *argv[])

一般的main函数都是不带参数的,因此main 后的括号都是空括号.实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数.C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv.因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组.加上形参说明后,main函数的函数头可以写为: main (int argc,char *argv[])

javascript中所有函数的参数都是按值传递的

[javascript中所有函数的参数都是按值传递的] 参考:http://www.jb51.net/article/89297.htm

在C++工程中main函数之前跑代码的廉价方法(使用全局变量和全局函数)

[cpp] view plain copy // test.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <windows.h> #include <crtdbg.h> /// 在C++工程中main函数之前跑代码的廉价方法 /// 利用全局变量可以赋可变初值的事实 /// mainCRTStartup() => _cin