
正文
c语言函数参数匹配 c语言有参数函数调用例子
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
c语言中,函数形参和实参必须相同么?
可以相同但也可以不相同
在程序执行c语言函数参数匹配的过程中c语言函数参数匹配,实参的作用域是主函数c语言函数参数匹配,只要程序没有停止c语言函数参数匹配,实参一直有效;形参是定义函数是引入的参数c语言函数参数匹配,系统只在该函数被调用时分配临时内存,当自定义函数执行完后,用于临时储存形参的空间将被释放。所以即使形参和实参的类型,名字完全一样,系统也能够把它们区分开。即可以完全一样。
函数的形参和实参具有以下特点:
1.形参变量只有在被调用时才分配内存单元,在调用结束时, 即刻释放所分配的内存单元。因此,形参只有在函数内部有效。
函数调用结束返回主调函数后则不能再使用该形参变量。
2.实参可以是常量、变量、表达式、函数等, 无论实参是何种类型的量,在进行函数调用时,它们都必须具有确定的值, 以便把这些值传送给形参。
因此应预先用赋值,输入等办法使实参获得确定值。
3.实参和形参在数量上,类型上,顺序上应严格一致, 否则会发生“类型不匹配”的错误。
4.函数调用中发生的数据传送是单向的。 即只能把实参的值传送给形参,而不能把形参的值反向地传送给实参。
因此在函数调用过程中,形参的值发生改变,而实参中的值不会变化
相关问答
Q1: C语言中的findwindow()函数参数是什么?
1.函数说明:FindWindowc语言函数参数匹配,Win32 API函数。
FindWindow函数返回与指定字符串相匹配c语言函数参数匹配的窗口类名或窗口名的最顶层窗口的窗口句柄。这个函数不会查找子窗口。
2.函数原型:
HWND FindWindow( LPCTSTR lpClassName,
LPCTSTR lpWindowName
);3.参数说明:
lpClassName
指向一个以null结尾的、用来指定类名的字符串或一个可以确定类名字符串的原子。如果这个参数是一个原子c语言函数参数匹配,那么它必须是一个在调用此函数前已经通过GlobalAddAtom函数创建好的全局原子。这个原子(一个16bit的值),必须被放置在lpClassName的低位字节中,lpClassName的高位字节置零。
lpWindowName
指向一个以null结尾的、用来指定窗口名(即窗口标题)的字符串。如果此参数为NULL,则匹配所有窗口名。
4返回值:
如果函数执行成功,则返回值是拥有指定窗口类名或窗口名的窗口的句柄。
如果函数执行失败,则返回值为 NULL 。可以通过调用GetLastError函数获得更加详细的错误信息。5.使用示例:HWND hWndRcv = ::FindWindow(NULL,"123");if(hWndRcv != NULL){ AfxMessageBox("找到123窗口");}
Q2: 调用函数时给的值,与参数的类型,不匹配是C语言传统上最大的漏洞
并不是不匹配,而是允许的类型提升。实参和形参确实是类型应该一致。如果不一致但兼容,有些编译器还会给出相应的Warning。
Q3: 求C语言大神指教,出现有多个重载函数sqrt实例与参数列表匹配,以下是代码
#include stdio.h
#include stdlib.h
#include math.h
int main(void)
{
int a,b,c,d;
double x1,x2;
printf("输入a,b,c(a不为0,数据间以空格隔开):");
scanf("%d %d %d",a,b,c);
d=b*b-4*a*c;//b^2在c里面不是平方 ^异或运算符
if(d=0)//用整形比较才比较精确
{
x1=(-b+sqrt((double)d))/(2.0*a);//说是有多个参数 可以float 可以double c语言函数参数匹配你输入intc语言函数参数匹配的编译器不知道转换为哪一种
x2=(-b+sqrt((double)d))/(2.0*a);
printf("方程的根为:%f,%f.\n",x1,x2);
}
else
{
printf("方程无实根.\n");
}
system("pause");
return 0;
}
Q4: c语言 int *p,m=5,n; p=&n; *p=m; 是不是n=5?
c是正确的。
a.p=n;p是一个整形指针,将整形m的地址赋给p正确
scanf("%d",
*p);
中第二个参数应该是一个整形指针,而*p是一个整形。修改为scanf("%d",
p);
就正确了
b.scanf("%d",
n);正确,n是一个整形,n表示n的地址
p=n;
p是一个指针,而n是一个整形,错误.改为p=n就正确了
其实也就是函数形参与实参的匹配的问题,如果实参可以通过隐形的转换(如int转换为double)就是可以的!注意各个函数的参数类型这一类问题应该是很简单的
Q5: c语言如果函数实参和形参类型不匹配编译程序将按赋值兼容的规则进行转换 此处的赋值兼容赋值兼容两种类
应该是你最后那句。因为函数在被调用之前就已经编译好了二进制代码。不可能改变形参。
c语言函数参数匹配的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言有参数函数调用例子、c语言函数参数匹配的信息别忘了在本站进行查找喔。





