
正文
c语言函数没有 c语言函数没有return返回什么值
提示:扫一扫查出行【扫一扫了解最新限行尾号】
复制提示
C语言中 函数没有输入参数 怎么理解
函数定义时在函数名后的圆括号的参数叫“形式参数”,简称“形参”;调用该函数时在函数名后的圆括号内的参数叫“实际参数”,简称“实参”。
int
Add(
int
num1
,
int
num2)
/*
num1和num2为形参
*/
{
return
num1
+
num2;
}
void
main()
{
int
a,
b,
value
a
=
1;
b
=
3;
value
=
Add
(a,
b);
/*
a和b为实参
*/
printf("%d
+
%d
=
%d\n",
a,
b,
value);
}
在C语言中,所谓的“输入参数”就是指形参;当形参使用引用传递时,输入参数也可以当作输出参数。
GetNumber()没有形参,也就没有输入参数。至于该函数体内部的变量c及输入语句,只能算是该函数的局部变量及赋值语句而已。简单来说,函数有没有输入参数,只要看函数名的圆括号内是否有参数即可。
相关问答
Q1: 请问C语言中一个函数没有return它返回什么?
首先是猜想c语言函数没有,主流平台上c语言函数没有,函数返回都是通过某个通用寄存器返回,x86平台是eax,arm是r0,所以猜想即使是void返回,如果硬是要得到返回值的话,应该是得到返回那一刻该寄存器的值。
证实:为了证实,需要写一点代码,一个最简单的void test(){},一个main(){printf("%d", test())},然而这样并不行,无法通过编译,需要使用手段,代码如下
void test()
{
return;
}
typedef int(*F)(void);
int main()
{
F f = (F)test;
printf("%d\n", f());
return 0;
}
对,就是把函数强制转换为返回int再调用,结果并不出人意料,是-858993460,这个数看起来没什么意义,不过转成16进制就有意义了,它是0xcccccccc,在VS的debug过程中,eax总是被初始化成这个值,堆栈内数组也是如此,同时它也是著名的"屯屯屯屯"的来源。
再把test改一下,进一步验证,试图让它返回0,办法是把eax变成0:
void test(){
int i = 1;
i--;
return;
}
猜想这次会输出0,因为i会放进eax里,再进行自减运算,结果也得到证实。
机器环境,win10 64bit,IDE,visual studio 2015 社区版。
希望有所帮助。
Q2: C语言函数没有返回类型也可以吗
没有返回类型是不对的,任何函数都有返回值,只不过可以返回void型(不能完全等同于没有返回值,因为必须注明void),如果定义函数时缺省返回值类型,则默认int型。
Q3: C语言,为什么没有调用到函数啊?
C语言语法不是这样的,感觉你之前用过其他编程语言
比如求x的平方根应该是sqrt(x)或者pow(x,0.5)
求x的平方是x*x或者 pow(x,2)
b除以2a,应该是b/(2*a),而不是b/2*a
再着,写scanf("%d%d%d")的话,你输入时不能输入其他字符,数字之间空格就行了
另外,一个函数只能返回一个值,没有return(x1,x2)这样的用法,return (x1,x2)只会返回x2
总之,你这份代码可以说是错误大合集,给你一个参考吧
c语言函数没有的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于c语言函数没有return返回什么值、c语言函数没有的信息别忘了在本站进行查找喔。








