定义的时候确实可以不写形参名字。
让客户满意是我们工作的目标,不断超越客户的期望值来自于我们对这个行业的热爱。我们立志把好的技术通过有效、简单的方式提供给客户,将通过不懈努力成为客户在信息化领域值得信任、有价值的长期合作伙伴,公司提供的服务项目有:申请域名、网络空间、营销软件、网站建设、依兰网站维护、网站推广。
你如果学了编译原理的话可以知道函数间是如何传参的(大多语言是通过栈),
c语言是第n个参数先压栈,再压第n-1个,。。。再压第一个。最后修改栈顶指针add esp,8。
当进入函数时都是
push ebp
mov ebp,esp
所以可以这么实现
//VS2010环境
void f(int,int)
{
int a,b;
__asm //这是嵌入汇编关键字,在VC6.0嵌入汇编好像是asm
{
mov eax,[ebp+8]
mov a,eax ;第一个参数
mov eax,[ebp+12]
mov b,eax ;第二个参数
}
printf("%d\t%d\n",a,b);
}
void main()
{
f(7,3);
}
函数定义的时候一定有形参名的
函数声明的时候可以没有形参名
和写参数名的情况是一样的。 调用时按照参数列表类型,传入对应个数 类型匹配的实参就行。
声明的时候,可以省略形参的参数名,而只保留类型。
即 声明int fun(int , int);
和声明 int fun(int a, int b);
效果是完全一样的 。 调用的时候 都是传入两个整型参数即可。
名字是否相同并不重要,重要的是类型必须相同。
因为,形参是所在函数的局部变量,所以形参在所在函数中会被多次使用,你需要统筹考虑。
而实参是主调函数的局部变量,是根据实际需要作为参数调用被调函数的,是否调用被调函数并不需要另外考虑实参名称,这是与形参的主要不同点。
可以啊。不过不写名的话就没法直接使用了(可以间接引用,如通过指针)。