作者:张老师,
C语言是一种面向过程的语言,它的程序执行过程是按逻辑顺序执行,在函数的函数体的定于位置与程序执行无关,该函数必须在程序执行过程中调用才能执行。
上图中:main函数中调用的函数fun(),若在main函数的执行过程中(包括main函数调用的函数内部调用)没有调用fun()函数,则该函数永远不会被执行。
当调用fun函数时,系统会给形参变量在栈中分配相应的内存空间,即整形变量a,和指针变量p,同时将实参赋值给对应的形参,即使定义了相同的全局变量a或者指针变量p。但他们代表的不是相同的内存空间,所以他们互不影响。
即如:
a=10;p=”abc”;
a=i;p=p;
当该fun函数结束时,该函数内部所申请分配的空间被释放。
函数可能在程序中多次调用,因为形参需要用来存储实参对应的值,正是由于实参值具有不确定性,因此不能指定形参的值。函数的参数传递是赋值过程,则形参必须有特定的存储空间才能接受实参的值。在函数的实参只要满足赋值形参的赋值要求都可以。
正常的运行结果:
若函数形参指定为确定的值而不是对应的变量则源文件编译不能通过。