c语言调用函数,必须在一条独立语句中完成,主函数main后的一对圆括号中也可以带有形参,对吗为什么

如题所述

什么是“c语言调用函数,必须在一条独立语句中完成”??
例如
int s()
{
return 5;
}
printf("%d", s());那么输出的而结果就会是5了……这个能解释么……

至于第二个问题
main函数的原型里边是带有三个参数的
如果正规完整来写,应该是
int main(int argc, char *argv, char *engv)
{
……
exit(……);//或者return……
}
如果你把main()当做一个普通函数来看待就好了,具有返回类型,返回值以及参数,只不过这个函数比较特别,因为调用它的是另外一个的程序的main()函数,因此调用时候必须指明它的程序名和参数(就像在main()中调用一个普通的函数,调用时候就一定要写出这个函数的名称和参数,只不过调用的机制不一样而已,使用的方式还是很像的)
其中argc是传递过来的参数个数,argv是指向这个参数列表的指针,engv是环境变量
如果你学习了linux的话这个应该是很好理解的
普通的一个独立运行的C语言函数是不需要往里边传递参数的,因此不需要直接在main后边的括号中不用写参数就可以
但是如果你编的这个函数作为一个程序使用的时候会被别的程序调用,就需要main()函数中带有参数了,就像是linux中的命令行参数,这些命令本质上就是一个一个的可执行程序,当然,很多都是可以传递过去参数的程序,我们使用命令的时候都是命令+参数的形式,命令执行的时候其实就是调用了对应的可执行程序,命令后边的参数就是通过argv传递过去的。
当然,就算你只执行了一个命令,后边没有参数也可以,因为很多程序都不需要参数,这时候默认的也是有argc和argv的内容的,argc=1, argv就是“程序名”(这个程序名就是一个程序名称的字符串)。系统中所有的可执行程序都有独立的main函数,而且都是从main开始执行的,我们只有通过输入命令的名称(也可以认为是可执行程序的名称)来寻找要执行的命令,如果从这个方面来说,那么往命令行中输入的命令名其实也算是一个参数,事实上,系统就是这么处理的,所以argv[0]中存放的参数永远都是程序(或者说指令)的名称,从argv[1]开始才是各个参数(当然,如果有参数的话)
至于环境变量argv,这个是你运行一个程序的时候,这个程序运行时候的环境状况,比如默认的执行路径啦,程序的权限和所有者啦等等,一般情况下这个是不需要改变或者设置的。如果有一些情况,比如你编写程序想要知道这个程序运行时候的各个环境变量,你就可以使用这个参数了,然后在程序中读取这个字符串数组指针指向的各个字符串的内容就可以了。
我自己写的,没有功劳也有苦劳了,接受了吧
温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2018-03-01
前面的不对后面的正确 前面那问题我给你个例子 比如说下面这个程序
#include<stdio.h>
int fun(int a,int d);
int main()
{
int b,c;
b=1;
c=2;
if(fun(a,b)) //在这里面函数fun就是在if语句里作为一个判断条件了,如果返回值不为0则if为真如果返回值为0则if为假
{...............
}
}
int fun(int a,int b)
{
.........}
main函数一般不包括形参,它是主调函数谁来调用它呢 但你可以参考下面的事实

每一个C程序的执行都是在系统的支持下进行的,main函数是系统执行相就的程序得到“调用”,从系统命令行中得到相应的参数。
main函数有两个参数,其中第一个参数的类型为整型,用于指出命令行中字符串的个数;第二个参数是一个字符指针数组,分别指向命令行中各个字符串,其一般形式为:
main(int argc, char *argv[ ]);其中,变量的名字可以根据程序人员的爱好进行改变,但参数的数目及各参数的类型是不可改变的,如有一个程序文件为file_cpy.exe,如果执行时,命令行为:file_cpy s_f d_f<CR>,则参数argc得到值3,而argv[0]、argv[1]、argv[2]分别指向字符串“file_cpy”、“s_f”、“d_f”。本回答被提问者和网友采纳
第2个回答  2011-11-26
函数调用可以把函数作为另一个函数的参数,不必独立使用啊,main函数后面的括号可以带参数