1.
C的编译器是是自上而下分析代码的。所以,一般把函数定义放到main()函数的前面。
当然,也可以放到后面。但是必须在main前面加上这个函数的声明部分。如下:
#include <stdio.h>
#include <stdlib.h>
int add(int a, int b);//函数声明
int main03(void)
{
add(1, 2);
printf("%d \n", add(10, 20));
system("pause");}int add(int a, int b){ return a + b;}
此外,在函数的声明中,即使参数名字不与函数定义中的相同也无妨。这里只是为了告诉编译器有几个什么类型的参数。
2.
C中如果类型不匹配,编译器可能不会提醒你错误,而是自动转换类型,但这不会是你期望的值
3.
每个函数有自己的变量空间,参数也位于这个独立空间中和其他函数没有任何关系。
add(1, 2);
这个括号里的就是真值,也即实际参数,而
int add(int a, int b);
这个括号里里的就是形式参数。
4.
void f()表示f函数的参数表未知,但并不表示没有参数。
函数块内部的同名变量会覆盖外部的同名变量,而最外部的变量是一直有效的。