⑴ c语言形式参数和实在参数
形参出现在函数定义中,在整个函数体内都可以使用,离开该函数则不能使用。实参出现在主调函数中,进入被调函数后,实参变量不能使用。
形参变量只有在被调用时才分配内存单元,在调用结束时,即刻释放所分配的内存单元。而实参在主调函数中已分配内存单元。
实参可以是常量、变量、表达式、函数等,无论实参是何种类型的量,在进行函数调用时,都必须具有确定的值,以便把这些值传送给形参。
实参和形参在数量上,类型上,顺序上应严格一致,否则会发生类型不匹配”的错误。
函数调用中发生的数据传送是单向的。即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
⑵ 对于C语言,一个函数可以有多少个参数
内存角度来看,函数的参数是要入栈的,栈区大小决定了参数的个数。一般C语言程序运行时默认1M的栈空间,以int类型的参数来看,1M=1024KB=1024*1024字节,32位系统中int类型占4个字节,所以理论上一个函数最多有262144个int类型的参数。实际中要远远小于这个数,因为应用程序中的局部变量都需要占用栈空间。
⑶ c语言的函数参数中 &与*
&的意思是引用传递
*的意思是指针传递
都可以用来改变实参的值,相当于参数值可以返回。
但使用的环境不同,有些地方只能用&,而有的地方只能用*,因为具体情况太多,这里就不列举了。
⑷ C语言中入口参数是什么
以下以 C 语言为例,其余语言与之有类似之处:
A function is uniquely represented by a name and a set of operand types.
Its operands, referred to as parameters, are specified in a
comma-separated list enclosed in parentheses. The actions that the
function performs are specified in a block, referred to as the function
body. Every function has an associated return type.
函数由函数名以及一组操作数类型唯一地表示。函数的操作数,也即形参,在一对圆括号中声明,形参与形参之间以逗号分隔。函数执行的运算在一个称为函数体的块语句中定义。每一个函数都有一个相关联的返回类型。
As an example, we could write the following function to find the greatest common divisor of two ints:
考虑下面的例子,这个函数用来求出两个 int 型数的最大公约数:
// return the greatest common divisor
int gcd(int v1, int v2)
{
while (v2) {
int temp = v2;
v2 = v1 % v2;
v1 = temp;
}
return v1;
}
Here
we define a function named gcd that returns an int and has two int
parameters. To call gcd, we must supply two int values and we get an int
in return.
这里,定义了一个名为 gcd 的函数,该函数返回一个 int 型值,并带有两个 int 型形参。调用 gcd 函数时,必须提供两个 int 型值传递给函数,然后将得到一个 int 型的返回值。
————C++ Primer 4th Edition
可以将形参理解为入口参数,返回值理解为出口参数
话说,现在应该基本上不使用“入口参数”/“出口参数”这样的说法了吧
⑸ C语言里的参数是什么意思
分为形参和实参,实参就是主调函数中的参数,形参是被调函数的参数。运行时实参把替换掉形参。就实现把实参的值传给形参。不懂翻书,很详细。
⑹ C语言 参数跟变量有什么区别
没有什么区别。函数的参数就和自己的局部变量一样使用。
⑺ C语言命令行参数
int main(int argc, char * argv[])
{
.....
}
argc: 代表启动程序时,命令行参数的个数。C和C++语言规定,可执行程序程序本身的文件名,也算是一个命令行参数,因此,argc的值至少是1.
argv[]:指针数组,其中的每个元素都是一个char* 类型的指针,该指针指向一个字符串,这个字符串里就存放着命令行参数。
例如,argv[0]指向的字符串就是第一个命令行参数,即可执行程序的文件名,argv[1]指向第二个命令行参数,argv[2]指向第三个命令行参数....。
#include <stdio.h>
int main( int argc, char * argv[])
{
int i;
for ( i = 0;i < argc; i++)
{
printf("%s ",argv[i]);
}
return 0;
}
windows下,将上面的程序编译成sample.exe,然后在控制台窗口敲:
sample para1 para2 s.txt 5 "hello world"
上面有6个参数,双引号为了包含空格作为一个参数。
输出结果:
sample
para1
para2
s.txt
5
hello world
(7)c语言参数扩展阅读:
main函数通常含有参数argc和argv,写法通常如下:
int main(int argc,char *argv[])
int main(int argc,char **argv)
程序:
#include<stdio.h>
int main(int argc,char *argv[])
{
int i;
for(i=0;i<argc;i++)
printf("第 %d 个参数是 %s ",i+1,argv[i]);
return 0;
}
⑻ c语言参数带void*
如果函数的参数不指定,(或者说可以是任意类型)的指针,则使用void *
如:void *func(void *var1) { }
void* 在ANSI与GNU中的表现也不一致。
ANSI中,void *p;
p++; p+=1; 都是不允许的,因为ANSI认为必须明确指针类型,才能进行运算。
而GNU中,则认为是合法的,默认规则是void*等同于char*
一般运用:
int *p; void *q;
*p = (int*)q;
(char *)q++;
(char*)q+=1;//这个就不一定正确了,要分编译器。
⑼ c语言主函数中的参数有什么用举例说明
下面是两年前对一网友的回答,供参考,希望有帮助。
main是C/C++的一重要函数,叫主函数。无论程序多复杂,代码中必须有这么一个函数,也只能有一个这样的函数;程序执行时就是从这个函数进入的。由于问得比较笼统,如果你想知道详细情况的话,发给你一个网友的求助与本人的回答,自己看吧……
假定以下程序经编译和连接后生成可执行文件PROG.EXE,如果在此可执行文件所在目录的提示符下键入: PROG ABCDEFGH IJKL<回车>则输出结果为:
void 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。不知给你说清楚了没有?希望有帮助。