printf,即打印函数,即将传入的传输打印到屏幕上来,重点在于打印到屏幕上,而不是"输出"这个概念,输出可能是在函数这个黑盒子里进行了数据运算,但是屏幕前的你我是看不见,其格式为
'printf("我是一个字符串");'
而return 则是返回值,什么是函数的返回值?一般是将这个函数对数据处理后的结果返回出来,如果没有返回值,会发生什么呢?
#include<stdio.h>
int main(void)
{
int a;
a = max(1,2);
printf(a);
return 0;
}
int max(int x,int y)
{
int max;
if (x > y)
max = x;
else
max = y;
}
我们会发现打印出的a仍然是max值,这是因为如果没有指定返回值,max函数会自动返回一个值,这次我们给它任意加上一个返回值
#include<stdio.h>
int main(void)
{
int a;
a = max(1,2);
printf(a);
return 0;
}
int max(int x,int y)
{
int max;
if (x > y)
max = x;
else
max = y;
return 100;
}
我们会发现打印出来是100,为什么呢?这是因为a = max(1,2);
这个语句实际上包含了两个步骤:
- 为max()函数传入参数1和,2,在max参数中进行一系列的处理,按照我们对max函数的理解,我们应该得到一个较大的值的,但是现在却得到了100,这是因为这个函数返回的值是用return语句执行的,而我们返回了100这个数,自然就得到了100这个结果了.如果我们要返回正确的值,我们应该返回max,即
return max
才行.通常返回值的类型在定义函数的时候需要在函数头说明.入这里的int max
前面的int
就是返回值类型. - 得到这个返回值之后,然后将这个返回值赋值给a.如果我们没有使用返回值,而编译器又没有默认返回一个值,那么我们就是将一个函数直接赋值给变量a,而不是一个值,通常这都会报错.这个返回值一般是用函数头加实参组成.如此处的
max(1,2)
就是一个返回值.这个返回值实际就是一个数,因此我们可以把它作为数值计算,如max(1,2) * 1
,或者作为另一个函数的传入参数,如sqrt(max(1,2))
,通常我们会遇到一个报错,说把函数作为一个参数传入,那么很可能就是因为我们没有为这个函数传入参数,而又没有使用函数指针,不能将函数作为参数传入
从上面我们可以再想一下,既然函数一般都有返回值,那么printf()这个函数又有没有参数呢?
#include<stdio.h>
int main(void)
{
int a;
a = printf("Hello World!");
printf("%d",a);
return 0;
}
实际上我跑一下就会发现我们a是有值的,如果我们多试几次,就会发现返回值其实是字符串的长度,实际上,如果printf跑出问题了,返回值会是一个负数.这在实际的应用中是有一些应用价值的.