考研C语言第七章

7.2函数的声明定义,函数的分类和调用

1、函数声明要在main函数上面,这样main函数才可以进行调用
在这里插入图片描述
第一节课主要就学了函数的调用,项目在开发的时候分工用的比较多
主要结构:
考研C语言第七章_第1张图片
func.c里面进行函数的定义
考研C语言第七章_第2张图片
不是很重要,进行了函数的的声明,调用了需要的类库
考研C语言第七章_第3张图片
使用其他文件里面定义的函数
考研C语言第七章_第4张图片

7.3函数的递归调用

自己调用自己,计算阶乘

#include 
#include 
#include 

int func(int n)
{
    if(n==1)
    {
        return 1;
    }
    return n*func(n-1);
}

int main() {
    int n;
    scanf("%d",&n);
    printf("f(%d)=%d\n",n,func(n));

}

考研C语言第七章_第5张图片
一开始输入的是3,正常走进函数体里面,当走到最后一句return时,需要再次走进自己的函数体里面,此时走进去的是3-1=2,2再走走到最后有需要f(1),又走了一遍,当1进去之后,不需要再走函数体了,而是返回1,就沿着上面的路走回需要自己数据的地方去。

小练习:
上台阶,一次上一层或者两层
考研C语言第七章_第6张图片
step(n)=step(n-1)+step(n-2)
到达n这一层的方式只有这两个

#include 
#include 
#include 

int step(int n)
{
    if(n==1||n==2)
    {
        //当台阶数是1时,有一种,台阶数为2时有1,1,和2两种
        return n;
    }
    return step(n-1)+step(n-2);

}
//上台阶,到第n台阶有多少种走法
int main() {
    int n;
    scanf("%d",&n);
    printf("step(%d)=%d\n",n,step(n));

}

对我自己有一个很难想清楚的点是:
总感觉需要一个count进行计数
考研C语言第七章_第7张图片

7.4局部变量和全局变量

考研C语言第七章_第8张图片

#include 
#include 
#include 

int i=10;//全局变量

void print(int i)
{
    printf("I am print i=%d\n",i);
}

int main() {
    printf("main i=%d\n",i);
    i=5;
    print(5);
    return 0;
}

不建议使用全局变量,全局变量在数据段,一直存在,加入定义的局部变量与全局变量名字还一样,就使用就近原则进行调用,容易造成混乱
考研C语言第七章_第9张图片
可以看到这里j是报错的
原因:局部变量只在离他最近的大括号内有效!!!
(我也一直以为是在所在函数体里面有效)

考研C语言第七章_第10张图片
当在for循环的括号里面定义并且使用了一个变量,在离开这个括号里面使用这个变量是不行的(用于某些题可能返回循环次数,但是一般用count进行计数)

你可能感兴趣的:(C语言学习,C语言)