是int main是什么意思还是main

12:32:27【 转载互联网】 作者: &&|&责编:李强
&&& &为了解决用户可能碰到关于"c语言。为什么int main放在中间。"相关的问题,突袭网经过收集整理为用户提供相关的解决办法,请注意,解决办法仅供参考,不代表本网同意其意见,如有任何问题请与本网联系。"c语言。为什么int main放在中间。"相关的详细问题如下:RT,我想知道:c语言。为什么int main放在中间。===========突袭网收集的解决方案如下===========
解决方案1:C语言变量采用先定义后使用的原则,如果把struct student stu1放在main()后面的话,那么它的作用域就不在main函数范围内,出现未声明错误。解决方案2:可是放到它下面不行么。为什么是中间?解决方案3:是这样的啊,struct student类型的定义放到main函数后面的话会报错,有两点问题。第一、stu2存储大小不确定,出现storage size isn't known类型错误。因为main函数执行的时候用到了struct student类型的变量stu2,C程序在编译的时候需要对变量分配内存空间,就要事先知道变量类型如何定义的,然后才能为其分配确定大小的存储空间,所以要放到main前面,main要在中间。第二、stu1未声明,undeclared类型错误,因为放到后面,main不知道stu1变量已经定义好了,直接拿过来用的话main也不知道是什么。你可以把上面的代码编译运行一遍,然后再把main调到前面在尝试编译运行,看一下效果。
================可能对您有帮助================
答:C语言变量采用先定义后使用的原则,如果把struct student stu1放在main()后面的话,那么它的作用域就不在main函数范围内,出现未声明错误。===========================================答:C语言变量采用先定义后使用的原则,如果把struct student stu1放在main()后面的话,那么它的作用域就不在main函数范围内,出现未声明错误。===========================================问:c语言,int main(void) 中间这个void有和没有到底有什么区别?答:void main 和 int main的区别就是有无返回值啊 在int main 可以出现非 int 类型的东西 我们在写代码时,一个函数要么有返回值,要么没有返回值,没有返回值就用void来表示。 main函数同样的,在没有返回值时加个void 。 有的编译器必须main要有...===========================================问:比如说#include&stdio.h& int main() {float a=2.0; printf("%f",a); re...答:输出函数在主函数里,是以浮点型数据输出的,这个返回值是在屏幕上显示的。而 int main() 主函数返回的值是0,即 return 0; 这个返回值不是显示在屏幕上的,而是函数的一部分,因为C都是函数组成的,即使是主体,它也是一个完整的函数。===========================================问:PT答:区别就是有无返回值。写代码时,函数有返回值,就用int,没有返回值就用void。有的编译器必须main要有返回值 int , 那就写成int main 。你可以都写成int main ,然后在后面加个return 0 ;他俩在作用上没什么区别。===========================================问:PT答:这个是c语言的语法,只能在执行前完成变量的定义 int main() { a=9;//这里定义就是不行的,必须放在a=9;这个语句之前 b=10; return 0; } 希望能够帮助你===========================================问:PT答:楼上说法有些错误。首先,mian函数作为主函数是程序的入口没错,但是它其实一定要被其他函数调用的,这些函数就是进入程序之前的引导。所以,有的时候,我们会发int返回值的main函数内不甚至用了参数,这些参数也是可以缺省的,但实际上都被默认...===========================================问:PT答:math.h为数学函数库,一些数学计算的公式的具体实现是放在math.h里,具体有: 三角函数 、反三角函数 、双曲三角函数 、指数与对数 、取整 、绝对值、标准化浮点数 、取整与取余 等。如果不使用到这些是不需要添加#include的===========================================问:我只查到后者是什么‘函数无参数’,具体是什么意思?它们分别在什么情况...答:一般来将,void 就是空的意思,在这里可以省略,int main(void) 可以看成 int main() . main 函数另一个重要的形式 是 : int main(int argc ,char *argv[]) ,这个形式中 argc 是给main函数参数的个数,argv[] 中的成员就是相应的参数, 看下面...===========================================关于int main(int argc,char *argv[]) 是什么意思_百度知道
关于int main(int argc,char *argv[]) 是什么意思
提问者采纳
你可以在开始-运行中输入cmd进入命令行。
比如一个叫做del的命令,(删除文件),其实就是del.exe,它带参数的,完整的命令格式可以是
del readme.txt
这个命令将删除当前路径下的readme.txt文件(如果有的话);
此时,运行的程序就是del.exe,而readme.txt就是它的参数,
假设del程序的main函数原型为 int main(int argc, char* argv[]),那么
argc = 1,(1个参数)
argv[0] = readme.txt(接收的字符串);
假设一个程序的main函数不带任何参数,那么很显然,它仍可以运行,只是,不接收参数罢啦答2:void main(int argc, char* argv[ ])
假设程序编译成为 cp.exe
然后在命令行中输入
c:\cp.exe doc1.txt doc2.txt
这行中有三个字符串分别为 cp.exe doc1.txt doc2.txt
则argc为3,即argc是命令行中参数的个数。
char *argv[]为一个指像字符串的数组。
argv[0]=&cp.exe&
argv[1]=&doc1.txt&
argv[2]=&doc2.txt&
即命令行中各各字符串保存在 *argv[]中归纳:简单说,这两个就是用于接受参数和记录参数信息的。
其他类似问题
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁共被编辑 3 次
考虑一个编译常用命令:make && make install
它的意思是,如果make返回0,则执行make install。不然,则不执行make install。
如果make命令是C语言写的话,在这里返回的是1还是0,就是在main函数里的return值。如果return值声明为void,那么就没有机会按情况return不同的值了。
然而另一个问题是,void main本身是不对的。按照的解释,C/C++标准从未接受过void为返回值的main声明。
感谢@Mutoo 的指正。
考虑一个编译常用命令:make && make install
它的意思是,如果make返回0,则执行make install。不然,则不执行make install。
如果make命令是C语言写的话,在这里返回的是1还是0,就是在main函数里的return值。如果return值声明为void,那么就没有机会按情况return不同的值了。
然而另一个问题是,void main本身是不对的。按照的解释,C/C++标准从未接受过void为返回值的main声明。
考虑一个编译常用命令:make && make install
它的意思是,如果make返回1,则执行make install。
如果make命令是C语言写的话,在这里返回的是1还是0,就是在main函数里的return值。如果return值声明为void,那么就没有机会return 1了。
举报理由:
带有人身攻击、辱骂、仇恨等违反条款的内容
与已有问题重复
内容质量差,或不适合在本网站出现
答非所问,不符合答题要求
其他原因(请补充说明)
补充说明:关于int main(int argc,char* argv[])详解 - hust_archer - 推酷
关于int main(int argc,char* argv[])详解 - hust_archer
平时在VS的环境下,主函数总会看到这两个参数,今天突然很想知道这两个参数的原理以及作用,因此查了下资料。真心受教了。
下面的博文是在百度空间看一位大神的,原文链接:/sgglong70626/item/dce21c1ee10f11e
argc是命令行总的参数个数&&&
argv[]为保存命令行参数的字符串指针,其中第0个参数是程序的全名,以后的参数为命令行后面跟的用户输入的参数,argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数argc。数组元素初值由系统自动赋予。比如:&&&
int&& main(int&& argc,&& char*&& argv[])&&&
for&& (i&& =&& 0;&& i&&& i++)&&&
cout&&argv[i]&&&&&
cin&&i;&&&
return&& 0;&&&
执行时敲入&&&
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE&& aaaa&& bbb&& ccc&& ddd&&&
输出如下:&&&
F:\MYDOCU~1\TEMPCODE\D1\DEBUG\D1.EXE&&&
--------------------------------------------------------------------
char&& *argv[]是一个字符数组,其大小是int&& argc,主要用于命令行参数&& argv[]&& 参数,数组里每个元素代表一个参数;
比如你输入&&&
test&& a.c&& b.c&& t.c&&&
argc&& =&& 4&&&
argv[0]&& =&& &test&&&&
argv[1]&& =&& &a.c&&&&
argv[2]&& =&& &b.c&&&&
argv[3]&& =&& &t.c&
--------------------------------------------------------------------------------------------&&
argc记录了用户在运行程序的命令行中输入的参数的个数。&&&
arg[]指向的数组中至少有一个字符指针,即arg[0].他通常指向程序中的可执行文件的文件名。在有些版本的编译器中还包括程序
文件所在的路径。
-------------------------------------------------------------------------
在调用一个可执行程序时,某些情况下需要向程序传递参数。如我们可以在控制台中键入notepad.exe,
回车后将执行记事本程序。如果我们希望在打开notepad时同时打开一个文本文件,可以在notepad.exe&&
后面跟上文件的路径和名字,如notepad.exe&& example.txt(文件在当前路径)。&&&
那么程序中如何能得到这些输入参数呢?这个工作是编译器帮我们完成的,编译器将输入参数的信息
放入main函数的参数列表中。&&&
main函数的参数列表保存了输入参数的信息,第一个参数argc记录了输入参数的个数,&&&
第二个参数是字符串数组的,字符串数组的每个单元是char*类型的,指向一个c风格字符串。&&&
以notepad.exe&& example.txt为例&&&
argc是2,就是说argv数组中有两个有效单元&&&
第一单元指向的字符串是&notepad.exe&&&&
第二单元指向的字符串是&example.txt&&&&
argv数组中的第一个单元指向的字符串总是可执行程序的名字,以后的单元指向的字符串依次是程序调用时的参数。&&&
这个赋值过程是编译器完成的,我们只需要读出数据就可以了。
-----------------------------------------------------------------------------
int&&&& main(&& int&& argc&& ,&& char&& *argv[]&& ,&& char&& *envp[]&& )&&&
main()函数一般用int或者void形的。我比较喜欢用int型定义main。因为在结束的时候可以返回给操作系统一个值以表示执行情况。&&&
int&& argc&&&
这个东东用来表示你在命令行下输入命令的时候,一共有多少个参数。比方说你的程序编译后,可执行文件是test.exe&&&
D:\tc2&test&&&
这个时候,argc的值是1&&&
D:\tc2&test.exe&& myarg1&& myarg2&&&
的话,argc的值是3。也就是&& 命令名&& 加上两个参数,一共三个参数&&&
char&& *argv[]&&&
这个东东用来取得你所输入的参数&&&
D:\tc2&test&&&
这个时候,argc的值是1,argv[0]的值是&& &test&&&&
D:\tc2&test&& myarg1&& myarg2&&&
这个时候,argc的值是3,argc[0]的值是&test&,argc[1]的值是&myarg1&,argc[2]的值是&myarg2&。&&&
这个东东一般用来为程序提供非常重要的信息,如:数据文件名,等等。&&&
如:copy&& a.c&& b.txt&&&
这个时候,a.c和b.txt就是所谓的“非常重要的信息”。不指定这两个文件,你没法进行拷贝。&&&
当你的程序用到argc和argv这两个参数的时候,可以简单地通过判断argc的值,来看看程序的参数是否符合要求&&&
char&& *envp[]&&&
这个东东相对来说用得比较少。它是用来取得系统的环境变量的。&&&
如:在DOS下,有一个PATH变量。当你在DOS提示符下输入一个命令(当然,这个命令不是dir一类的内部命令)的时候,DOS会首先在当前目录下找 这个命令的执行文件。如果找不到,则到PATH定义的路径下去找,找到则执行,找不到返回Bad&& command&& or&& file&& name&&&
在DOS命令提示符下键入set可查看系统的环境变量&&&
同样,在UNIX或者LINUX下,也有系统环境变量,而且用得比DOS要多。如常用的$PATH,$USER,$HOME等等。&&&
envp保存所有的环境变量。其格式为(UNIX下)&&&
PATH=/usr//local/&&&
HOME=/home/shuui&&&
环境变量名=值&&&
DOS下大概也一样。&&&
环境变量一般用来为程序提供附加信息。如,你做了一个显示文本的内容的程序。你想控制其一行中显示的字符的个数。你可以自己定义一个环境变量(UNIX下)&&&
%setenv&& NUMBER&& =&& 10&&&
%echo&& $NUMBER&&&
然后你可以在程序中读入这个环境变量。然后根据其值决定一行输出多少个字符。这样,如果你不修改环境变量的话,你每次执行这个程序,一行中显示的字符数都是不一样的&&&
下面是一个例子程序&&&
/* argtest.c */&&&
#include&stdio.h&&&&
int main(&& int&& argc&& ,&& char&& *argv[]&& ,&& char&& *envp[]&& )&&&
printf(&& &You&& have&& inputed&& total&& %d&& argments\n&&& ,&& argc&& );&&&
for(&& i=0&& ;&& i&argc&& ;&& i++)&&&
printf(&& &arg%d&& :&& %s\n&&& ,&& i&& ,&& argv[i]&& );&&&
printf(&& &The&& follow&& is&& envp&& :\n&&& );&&&
for(&& i=0&& ;&& *envp[i]!='\0'&& ;&& i++&& )&&&
printf(&& &%s\n&&& ,&& envp[i]&& );&&&
return&& 0;&&&
D:\&argtest&& this&& is&& a&& test&& programe&& of&& main()'s&& argments&&&
You&& have&& inputed&& total&& 9&& argments&&&
arg0&& :&& D:\TC\NONAME.EXE&&&
arg1&& :&& this&&&
arg2&& :&& is&&&
arg3&& :&& a&&&
arg4&& :&& test&&&
arg5&& :&& programe&&&
arg6&& :&& of&&&
arg7&& :&& main()'s&&&
arg8&& :&& argments&&&
The&& follow&& is&& envp&& :&&&
TMP=C:\WINDOWS\TEMP&&&
TEMP=C:\WINDOWS\TEMP&&&
PROMPT=$p$g&&&
winbootdir=C:\WINDOWS&&&
PATH=C:\WINDOWS;C:\WINDOWS\COMMAND&&&
COMSPEC=C:\&&&
SBPCI=C:\SBPCI&&&
windir=C:\WINDOWS&&&
BLASTER=A220&& I7&& D1&& H7&& P330&& T6&&&
CMDLINE=noname&& this&& is&& a&& test&& programe&& of&& main()'s&& argments&&&&&
-----------------------------------------------------------------------------------------
命令行参数啊。argc&& 是参数的个数,argv[]是参数,argv[0]是文件名,argv[1]是第一个参数...&&&
如你得exe文件名是:myprog.exe,那么&&&
myprog&& 12&& 22&& 32&&&
则argv[0]=&myprog&,argv[1]=&12&,argv[2]=&22&...&&&
exit()是程序退出时的返回码。可以用其他程序接收,判断是否正常退出。如exit(-1)认为异常退出。
---------------------------------------------------------------------------------------------
请问这里为什么要设置这两个参数呢?不要不行吗?谢谢
有些时候程序运行时需要提供一些参数。比如copy命令,需要指明源文件和目标文件名,就得通过argc和argv来传递
1、int main(int argc,char *argv)与int main(int argc,char **argv)区别?
int main(int argc,char *argv)
argc: 整数,用来统计你运行程序时送给的命令行参数的个数
* argv: 字符串,用来存放指向你的字符串参数的,每一个元素指向一个参数
argv[0] 指向程序运行的全路径名
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串
argv[2] 指向执行程序名后的第二个字符串
& int main(int argc,char **argv) 相当于& int main(int argc,char *argv[ ] )
&&&& argc: 整数,用来统计你运行程序时送给的命令行参数的个数
* argv: 字符串,用来存放指向你的字符串参数的,每一个元素指向一个参数
argv[1] 指向在DOS命令行中执行程序名后的第一个字符串的指针
argv[2] 指向执行程序名后的第二个字符串的指针
&&&&& 在int main(int argc,char **argv)中 argv[1]是一个指针,存的内容是一个地址,而在int main(int argc,char
&&&&&& *argv)中argv[1]是一个数组元素(个人理解)
&我们经常用的main函数都是不带参数的。因此main 后的括号都是空括号。实际上,main函数可以带参数,这个参数可以认为是 main函数的形式参数。C语言规定main函数的参数只能有两个, 习惯上这两个参数写为argc和argv。因此,main函数的函数头可写为: main (argc,argv)C语言还规定argc(第一个形参)必须是整型变量,argv( 第二个形参)必须是指向字符串的指针数组。加上形参说明后,main函数的函数头应写为:&&
main (argc,argv)
char *argv[];或写成:
main (int argc,char *argv[])
由于main函数不能被其它函数调用, 因此不可能在程序内部取得实际值。那么,在何处把实参值赋予main函数的形参呢? 实际上,main函数的参数值是从操作系统命令行上获得的。当我们要运行一个可执行文件时,在DOS提示符下键入文件名,再输入实际参数即可把这些实参传送到main的形参中去。
DOS提示符下命令行的一般形式为: C:\&可执行文件名 参数 参数……; 但是应该特别注意的是,main 的两个形参和命令行中的参数在
位置上不是一一对应的。因为,main的形参只有二个,而命令行中的参数个数原则上未加限制。argc参数表示了命令行中参数的个数(注意:文件名本身也算一个参数),argc的值是在输入命令行时由系统按实际参数的个数自动赋予的。例如有命令行为: C:\&E6 24 BASIC dbase FORTRAN由于文件名E6 24本身也算一个参数,所以共有4个参数,因此argc取得的值为4。argv参数是字符串指针数组,其各元素值为命令行中各字符串(参数均按字符串处理)的首地址。 指针数组的长度即为参数个数。数组元素初值由系统自动赋予。其表示如图6.8所示:
main(int argc,char *argv){
while(argc--&1)
printf(&%s\n&,*++argv);
本例是显示命令行中输入的参数如果上例的可执行文件名为e24.exe,存放在A驱动器的盘内。
因此输入的命令行为: C:\&a:e24 BASIC dBASE FORTRAN&&
则运行结果为:
该行共有4个参数,执行main时,argc的初值即为4。argv的4个元素分为4个字符串的首地址。执行while语句,每循环一次 argv值减1,当argv等于1时停止循环,共循环三次, 因此共可输出三个参数。在printf函数中,由于打印项*++argv是先加1再打印, 故第一次打印的是argv[1]所指的字符串BASIC。第二、 三次循环分别打印后二个字符串。而参数e24是文件名,不必输出。
下例的命令行中有两个参数,第二个参数20即为输入的n值。在程序中*++argv的值为字符串“20”,然后用函数&atoi&把它换为整型作为while语句中的循环控制变量,输出20个偶数。
#include&stdlib.h&
main(int argc,char*argv[]){
int a=0,n;
n=atoi(*++argv);
while(n--) printf(&%d &,a++*2);
本程序是从0开始输出n个偶数。指向指针的指针变量如果一个指针变量存放的又是另一个指针变量的地址, 则称这个指针变量为指向指针的指针变量。
在前面已经介绍过,通过指针访问变量称为间接访问, 简称间访。由于指针变量直接指向变量,所以称为单级间访。 而如果通过指向指针的指针变量来访问变量则构成了二级或多级间访。在C语言程序中,对间访的级数并未明确限制, 但是间访级数太多时不容易理解解,也容易出错,因此,一般很少超过二级间访。 指向指针的指针变量说明的一般形式为:&&
类型说明符** 指针变量名;&&
例如: int ** 表示pp是一个指针变量,它指向另一个指针变量, 而这个指针变量指向一个整型量。下面举一个例子来说明这种关系。
int x,*p,**
printf(&x=%d\n&,**pp);
上例程序中p 是一个指针变量,指向整型量x;pp也是一个指针变量, 它指向指针变量p。通过pp变量访问x的写法是**pp。程序最后输出x的值为10。通过上例,读者可以学习指向指针的指针变量的说明和使用方法。
下述程序中首先定义说明了指针数组ps并作了初始化赋值。 又说明了pps是一个指向指针的指针变量。在5次循环中, pps 分别取得了ps[0],ps[1],ps[2],ps[3],ps[4]的地址值(如图6.10所示)。再通过这些地址即可找到该字符串。
static char *ps[]={ &BASIC&,&DBASE&,&C&,&FORTRAN&,
&PASCAL&};
for(i=0;i&5;i++){
printf(&%s\n&,*pps);
本程序是用指向指针的指针变量编程,输出多个字符串。
已发表评论数()
&&登&&&陆&&
已收藏到推刊!
请填写推刊名
描述不能大于100个字符!
权限设置: 公开
仅自己可见在C语言中,int main()和int main(void)有什么区别?_百度知道
在C语言中,int main()和int main(void)有什么区别?
我只查到后者是什么‘函数无参数’,具体是什么意思?它们分别在什么情况下使用,求解~
提问者采纳
一般来将,void 就是空的意思,在这里可以省略,int main(void) 可以看成 int main() .main 函数另一个重要的形式 是 :
main(int argc ,char *argv[])
,这个形式中 argc 是给main函数参数的个数,argv[] 中的成员就是相应的参数,看下面的例子就明白了,在你将这个程序编译完成后假如生成一个helloworld.out 这样一个可执行文件,那么在执行时
helloworld.out 123 456 那么123 456 就会作为参数传给main函数,
argc 等于2
就是 123 argv[2] 就是 456,这样在你程序中就可以直接引用了这两参数了。
其他类似问题
按默认排序
其他3条回答
基本上差不多
main(void) 代表无参数
main() 代表不确定参数。应该说,用void 的更规范吧
没区别,一样的。
无大区别,int main()默认就是void
等待您来回答
下载知道APP
随时随地咨询
出门在外也不愁}

我要回帖

更多关于 int main 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信