chap5函数的学习
作者:互联网
这两周我们已经开始接触了c语言的函数部分的学习,其中重点学习了函数的定义,调用和声明。
1.函数的定义和调用
函数的定义模板:
函数类型 函数名 (形参) { 函数过程 }
函数的调用模板:
函数名(实参);
以上便是c语言函数的定义和调用模板
2.其注意形参和实参的关系,以免搞混自变量:
1)参数分为两类,形参和实参。其中形参必须定义其类型,且与主程序中调用函数的类型一致,对于变量名则不必与主程序调用中的变量一致,主要是声明类型作用。实参在函数体中,与实参的变量名对应,是函数程序中的变量。
2)此外变量还有局部变量和全局变量之分:
局部变量和全局变量:
局部变量的有效范围局限于函数内部,也就是不同的函数可以有相同的变量名,它们互不干扰。因此使用好函数的第一步就是用好参数的传递。我们将主函数中的变量通过函数的调用传递到自定义函数中。
全局变量的作用范围是从程序定义开始到结束,不属于任何函数,其值在任何函数中都是一样的,因此需要定义在任何函数之前,当然也可以通过预处理#define宏定义一个全局变量。
局部变量还有一种特殊形式叫静态局部变量,它虽然使局部变量,只能作用在本函数中,但与局部变量不同之处在于,局部变量的值函数调用一次后被自动回收而静态变量的值不会因为函数调用结束被回收,它的值会一直保留到程序结束,这里说的保留并不是变量值不会改变,而是可以变很多次,但每次都会被保存下来。
以下是我在网上找到的一个区分局部变量和全局变量的例子,可供大家参考(也请提供意见)
程序1:
#include<stdio.h>
static int m;
void fun1()
{
static int n = 0;//静态局部变量
n++;
printf("n=%d\n",n);
}
void fun2()
{
m = 0;//全局变量
m++;
printf("m=%d\n", m);
}
int main()
{
int i;
for (i = 0; i < 5; i++)
{
fun1();
}
return 0;
}
局部变量结果:
n=1
n=2
n=3
n=4
n=5
请按任意键继续. . .
程序2:
#include<stdio.h>
static int m;
void fun1()
{
static int n = 0;//静态局部变量
n++;
printf("n=%d\n",n);
}
void fun2()
{
m = 0;//全局变量
m++;
printf("m=%d\n", m);
}
int main()
{
int i;
for (i = 0; i < 5; i++)
{
/*fun1();*/
fun2();
}
return 0;
}
全局变量结果:
m=1
m=1
m=1
m=1
m=1
原文链接:https://blog.csdn.net/yanxiaolx/article/details/51531637
全局变量和局部变量的区别:通过调用函数举例
a.全局变量申明位置在所有代码块之外,不存储于堆栈,作用域为从申明到文件尾,如果申明为static,不允许从其他文件访问
b.局部变量申明位置在代码块起始处,存储于堆栈,作用域为整个代码块,如果申明为static,变量不存储于堆栈中,他的值在整个程序的执行期一直保持
c.形式参数申明位置在函数头部,存储于堆栈,作用域为整个函数,不允许申明为static
以上就是关于函数部分学习的总结,希望接下来的函数学习能顺利(不太会写博文,借鉴了许多)
标签:函数,int,局部变量,学习,++,chap5,static,全局变量 来源: https://www.cnblogs.com/chenzhikun/p/15414197.html