C语言中的main函数参数作用

C语言中的main函数参数作用,第1张

在调用可执行程序时,可以通过main函数参数将命令行的调用参数传递给main函数。

事实上,main()函数既可以是无参函数,也可以是有参的函数。对于有参的形式来说,就需要向其传递参数。

从函数参数的形式上看,包含一个整型和一个指向字符指针的指针。当一个C的源兄贺银程序经过编译、链接后,会生成扩展名为.EXE的可执行文件(对windows *** 作系统而言),这是可以在 *** 作系统下直接运行的文件,换句话说,就是由系统来启动运行的。由系统在启动运行时传递参数。

在 *** 作系统环境下,一条完整的运行命令应包括两部分:命羡宴令与相应的参数。其格式为:

命令参数1参数2....参数nt

此格式也称为命令行。命令行中的命令就是可执行文件的文件名,其后所跟参数需用空格分隔,并为对命令的进一步补充,也即是传递给main()函数的参数。

命令行与main()函数的参数存在如下的关系:

设命令行为:program str1 str2 str3 str4 str5

扩展资料:

main 函数的返回值类型必须是 int ,这样返回值才能传递给程序的激活者(如 *** 作系统)。

如果 main 函数的最后没有写 return 语句的话,C99 规定编译器要自动在拍腊生成的目标文件中(如 exe 文件)加入return 0,表示程序正常退出。不过,我还是建议你最好在main函数的最后加上return 语句,虽然没有这个必要,但这是一个好的习惯。

也就是说在最新的C语言标准中强制要求main函数的返回值类型为int,main函数的返回值是传递给 *** 作系统,让 *** 作系统判断程序的执行情况(是正常结束还是出现异常)。

参考资料来源:百度百科-main函数

问题一:主函数是什么? 对于控制台应该程序来说,主函数名是main,对于窗口应用程序来说,主函数名是WinMain。主函数,说白了就是C\C++程序的入口函数,即应用程序运行时首先执行的代码,你所有的代码都要从进入主函数后才会执行。但实际上,一个应用程序最开始执行的并不是主函数,而是C\C++的运行时库代码,它们会进行一些初始化工作,接下来他们才会去调用主函数,直到这时,程序的控制权才到了你的手上。

问题二:main() 主函数是什么意思啊 int main(int 丁rgc, char *argv[]) 就是main函数了

main函数就是整个程序的入口函数

()内的是向他传递的参数

前面的int表示返回值类型

问题三:C语言里的主函数是什么 5分 main()

问题四:C语言中主函数的作用是什么? 准确地说是编译器为可执行文件加上了一个启动例程,ELF头部的入口地址就指向该启动例程,然后在启动例程中有下面一句:80482fc: e8 c3 ff ff ff call 80482c4 通过它调用C库的_libc_start_main,再调用我们的main由于main函数是被启动例程调用的,所以从main函数return时仍返回到启动例程中,main函数的返回值被启动例程得到,如果将启动例程表示成等价的C代码(实际上启动例程一般是直接用汇编写的),则它调用main函数的形式是:exit(main(argc, argv))

问题五:C语言主函数的函数名是什么意思? 看看谭浩强的C语言设计~~你就知道了!!

问题六:函数定义在主函数的上面,梁竖哪是什么意思? 怎样才算定义在主函数上面?求解。 比如

int fun1()

{

}int main()

{

fun1()

}

这样就是定义在主函数上面;这样就可以不在主函数中声明函数了!

问题七:C++主函数带参数是什么意思 比如你做了一个 main.cpp 编译连接成 main.exe

如果你在 dos 命令行里启动该可执行文件应该是 main 或 main.exe

或带参数的 main.exe a b c

此时,main,纤颂main.exe,{main.exe,a,b,c} 就是 *** 作系统传给程序的参数,他是一个字符串或字符串数组

这是在 shell 里这么做的

当你直接双击该程序的图标,OS会自贰加上一些附加参数,具体我不知道

我是这么认为的

问题八:c++中,主函数main的位置是任意的吗?

问题九:C语言main主函数带参数是做什么用的 main函数可以不带参数,也可以带参数,这个参数可以认为是 main函数的形式参数。

C语言规定main函数的参数只能有两个,还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:

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

由于main函数不能被其它函数调用橡码,因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从 *** 作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。

DOS提示符下命令行的一般形式为:

C:\>可执行文件名 参数 参数……

问题十:C语言中的子函数和主函数有什么联系啊?它们是怎么编写的? 函数定义的一般形式

1.无参函数的一般形式

类型说明符 函数名()

{

类型说明

语句

}

其中类型说明符和函数名称为函数头。 类型说明符指明了本函数的类型,函数的类型实际上是函数返回值的类型。 该类型说明符与第二章介绍的各种说明符相同。 函数名是由用户定义的标识符,函数名后有一个空括号,其中无参数,但括号不可少。{} 中的内容称为函数体。在函数体中也有类型说明, 这是对函数体内部所用到的变量的类型说明。在很多情况下都不要求无参函数有返回值, 此时函数类型符可以写为void。

我们可以改为一个函数定义:

void Hello()

{

printf (Hello,world \n)

}

这里,只把main改为Hello作为函数名,其余不变。Hello 函数是一个无参函数,当被其它函数调用时,输出Hello world字符串。

2.有参函数的一般形式

类型说明符 函数名(形式参数表)

型式参数类型说明

{

类型说明

语句

}

有参函数比无参函数多了两个内容,其一是形式参数表, 其二是形式参数类型说明。在形参表中给出的参数称为形式参数, 它们可以是各种类型的变量, 各参数之间用逗号间隔。在进行函数调用时,主调函数将赋予这些形式参数实际的值。 形参既然是变量,当然必须给以类型说明。例如,定义一个函数, 用于求两个数中的大数,可写为:

int max(a,b)

int a,b

{

if (a>b) return a

else return b

}

第一行说明max函数是一个整型函数,其返回的函数值是一个整数。形参为a,b。第二行说明a,b均为整型量。 a,b 的具体值是由主调函数在调用时传送过来的。在{}中的函数体内, 除形参外没有使用其它变量,因此只有语句而没有变量类型说明。 上边这种定义方法称为“传统格式”。 这种格式不易于编译系统检查,从而会引起一些非常细微而且难于跟踪的错误。ANSI C 的新标准中把对形参的类型说明合并到形参表中,称为“现代格式”。

例如max函数用现代格式可定义为:

int max(int a,int b)

{

if(a>b) return a

else return b

}

现代格式在函数定义和函数说明(后面将要介绍)时, 给出了形式参数及其类型,在编译时易于对它们进行查错, 从而保证了函数说明和定义的一致性。例1.3即采用了这种现代格式。 在max函数体中的return语句是把a(或b)的值作为函数的值返回给主调函数。有返回值函数中至少应有一个return语句。 在C程序中,一个函数的定义可以放在任意位置, 既可放在主函数main之前,也可放在main之后。例如例1.3中定义了一个max 函数,其位置在main之后, 也可以把它放在main之前。

修改后的程序如下所示。

int max(int a,int b)

{

if(a>b)return a

else return b

}

void main()

{

int max(int a,int b)

int x,y,z

printf(input two numbers:\n)

scanf(%d%d,&x,&y)

z=max(x,y)

printf(maxmum=%d,z)

}

现在我们可以从函数定义、 函数说明及函数调用的角度来分析整个程序,从中......>>

这是C/C++的一重要函数,叫主函数。无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数;程序执行时就是从这个函数进入的。由于问得比较笼统,如果你想知道详细情况的话,发给你一个网友的求助与本人的回答,自己看吧……

假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的提示符下键入: PROG ABCDEFGH IJKL<回车>则输出结果为:

main(int argc,char *argv[])

{while(--argc>0)

printf("%s",argv[argc])

printf("\n"慎睁春)}

各句程序什么意思?

输出结果是什么?

请帮忙解决,谢谢

回答求助:

这段代码不长,但要说清楚你的要求还需要比较长的一段话。首先,说一下main(int argc,char *argv[])函数的两个形参,第一个int argc,是记录你输入在命令行(你题目中说的 *** 作就是命令行输入)上的字符串个数;第二个*argv[]是个指针数组,存放输入在命令行上的命令(字符串)。当命令行输入PROG ABCDEFGH IJKL时,记录了3个字符串(以间隔为界,不含间隔,这是约定),*argv[0]中放的是"PROG",*argv[1]中放的是"ABCDEFGH",*argv[2]中放的是"IJKL",这样argc就是3了。while(--argc>0)是条件循环,argc>0时继续;argc初值是3,前置--先宽耐减1为2,所以后面的输出语句打出*argv[2]中的内容IJKL;再执行while(--argc>0),argc再减1为1,打出*argv[1]中的内容ABCDEFGH;再循环,argc减1为0,条件破坏,不再执行while(--argc>0)的循环体。所以最后显示的是IJKLABCDEFGH。不知给你说早消清楚了没有?希望有帮助。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/12312800.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存