TC编程手册之二2008-04-04函数与数组.由于时间和精力有限,故不能像谭浩强谭老那样把C语言讲的细致入微, 但我想简单易懂的讲解对初学者来说还是有很大帮助的.函数:几乎所有的C语言教材都把函数部分单列一章, 可见函数在C语言中是十分重要的.当一位初学者试图编写一则上百行的程序时, 他会很快就被数不清的变量搞得晕头转向, 再看各条语句的逻辑关系, 恐怕连自己也看不懂了吧, 更不用说别人读你的程序了. 这时你所需要的就是把一个较大的程序分为若干个程序模块, 每一个模块实现一个特定的功能. 所有函数都是平行的, 即在定义函数时是互相独立的, 一个函数并不从属于另一个函数, 即函数不能嵌套定义. 就是这样一个一个平行关系的小模块, 将一个复杂的程序分生了多个简单的小程序. 这样做可以使程序的条理更加的清晰, 不仅方便了程序员的工作, 也便于其他人对程序的阅读.从用户使用的角度看,函数有两种(以下援引谭老的话,不好意思,毕竟谭老的经验要更丰富嘛^0^):(1).标准函数, 即库函数. 这是由系统提供的, 用户不必自己定义这些函数, 可以直接使用他们. 应该说明, 不同的C系统提供的库函数的数量和功能不同, 当然有一些基本的函数是共同的.(2).用户自己定义的函数, 用以解决用户的专门需要.从函数的形式看,函数分两类:(1).无参函数.例如:printstar();
print_message();
main()
{
printstar();
print_message();
printstar();
}
printstar()
{
printf("************
");
}
print_message()
{
printf("*green food*
");
}
运行结果如下:************* green food *************其中printstar和print_message都是无参函数.在调用无参函数时,主调函数并不将数据传送给被调用函数.无参函数可带回或不带回函数值.(2)有参函数. 在调用函数时,在主调函数与被调函数之间有数据传递. 也就是说主调函数可以将数据传递给被调函数使用, 被调函数的数据也可以传回来共主调函数使用. 例如: #include
print_add();
main()
{
printf("the add is: %d",print_add());
}
print_add()
{
int a=1, b=2, c;
c=a+b;
return c;
}
运行结果如下:the add is: 3以上我们对函数有了大致的了解, 下面我向大家介绍一下形式参数和实际参数.首先从定义入手, 形式参数即在定义函数时函数后面括弧中的变量名. 而实际参数则是指在主调函数中调用一个函数时, 函数名后面括弧中的参数.(可以是一个表达式) 具体见下例: #include
print_add(int, int);
main()
{
int a, b, c;
scanf("%d%d",&a,&b);
c=print_add(a,b);
printf("the add is :%d",c);//实际参数
}
print_add(int x, int y)//形式参数
{
int z;
z=x+y;
return(z);
}
需要注意的几点问题:(1) 实参可以是常量,变量, 或表达式, 但必须要有确切的值.(2) 在被定义的函数中, 必须指定形参的类型.(3) 形参与实参的类型应相同或赋值兼容.函数需要讲的东西还有很多, 这里只是一个简略的介绍. 还有很多的内容没有涉及到, 推荐大有时间可以看看谭浩强的书. 关于函数部分谭老的书要比老Delitel写的有条理的多.(也许是翻译工作做的不好)希望大家在看了上面的文章后, 能有所帮助. 有问题可以给我写信, 我的邮箱是:ck0243@sina.com.