void的含义:
# include <stdio.h>
int f(void) //void表示不接收任何数据,int表示返回int类型值,即下面的 return 10;
{
return 10; //向主调函数返回10,即向main函数中调用的语句返回10这个值。
}
void g(void) //函数名前的void表示该函数没有返回值。
{
//return 10; //错误,与上面的void相矛盾,不能有返回值。
}
int main(void)
{
int i = 88;
int j = 5201314;
i = f(); //因为f函数不接收任何数据,所以括号内为空,调用函数后,f函数返回10,i的值变为10。
//j = g(); //因为g函数没有返回值,所以不能赋值给j。注意:没有返回值不是返回0,而是返回为空!
printf("%d\n", i);
printf("%d\n", j);
return 0;
}
break与return的区别:
# include <stdio.h>
void f(void)
{
int i;
for(i=0; i<5; i++)
{
printf("呵呵!\n");
break; //break用于终止for循环。
}
return; //return用于终止整个函数。
printf("哈哈!\n");
}
int main(void)
{
f();
return 0;
}
函数练习——多次求素数:
# include <stdio.h>
//本函数功能是判断一个数是否为素数,如果是,则返回true,如果不是,则返回false。
bool IsPrime(int m)
{
int i;
for (i=2; i<m; ++i)
{
if (0 == m%i)
break;
}
if (i == m)
return true;
else
return false;
}
//本函数功能是输入1到n所有的素数。
void TraverseVal(int n)
{
int i;
for (i=2; i<=n; ++i)
if ( IsPrime(i) )
printf("%d\n", i);
}
int main(void)
{
int i;
int val;
int j;
printf("请输入需要求的次数:");
scanf("%d", &i);
for (j=1; j<=i; ++j)
{
printf("请输入第 %d 次上限:", j);
scanf("%d", &val);
TraverseVal(val);
}
return 0;
}
全局变量与局部变量:
# include <stdio.h>
int k = 1000; //k即为全局变量,即可供所有函数使用。
void f(int i)
{
int j; //形参i和定义变量j都为局部变量,即仅供函数内部使用。
printf("k = %d\n", k);
}
int main(void)
{
int m = 10;
f(m);
return 0;
}
全局变量与局部变量的命名冲突问题:
# include <stdio.h>
int i = 99;
void f(int i)
{
printf("i = %d\n", i);
}
int main(void)
{
f(8);
return 0;
}
/*
输出结果为:i = 8 即当全局变量名与局部变量名相同时,会默认采用局部变
量,即局部变量(Private)优先级>全局变量(Public)。
*/