C语言入门第十五篇,作用域

我也不知道什么时候该讲这个问题,其实觉得一开始就应该讲这个问题,但又觉得不太形象,所以我决定函数讲完后就应该让大家了解一下作用域的问题。
概述
当变量或者函数等声明时,它只有在程序的一定区域才能被访问。这个区域就是这个函数或者这个变量的作用域。
我们以下列代码来讲述作用域的问题:

#include<stdio.h>

int a;
void swap(int &d,int &e);
int  largest_common_divisor(int b,int c);
int Least_common_multiple(int d,int e);

void swap(int &d,int &e)
{
    int temp=d;
    d=e;
    e=temp; 
}

int  largest_common_divisor(int b,int c)
{
    int temp;
    if(b<c)
    {
        swap(b,c);
    }
    while(b%c!=0)
    {
        temp=c;
        c=b%c;
        b=temp;
    }
    return c;
} 

int Least_common_multiple(int d,int e)
{
    int sum=d*e;
    return sum/largest_common_divisor(d,e);
}

int main()
{
    int x,y;
    scanf("%d%d",&x,&y);
    printf("最大公约数为%d\n",largest_common_divisor(x,y));
    printf("最小公倍数为%d\n",Least_common_multiple(x,y));
    return 0;
}

这个程序是实现输入两个数求最大公约数和最小公倍数。这里主要讨论作用域的问题。
第三行的int a,在所有代码以外,是全局变量。也就说在下面的所有代码块中都可以对它进行赋值等等的操作。
而函数中声明的变量和函数的形参,都只在函数本身块中使用,超过函数本身变量就失效了
大家可以自行体会一下这段程序以及变量的作用域。
函数同样也有作用域,如果我不在最前面写下下面的内容,函数的调用也可以能有问题。

void swap(int &d,int &e);
int  largest_common_divisor(int b,int c);
int Least_common_multiple(int d,int e);

在上一章我讲了函数的声明方式,他其实类似变量,如果我没有上面这一段函数声明(一般在开发中这些声明是放在自定义的头文件里的),又恰巧我把最大公约数(largest_common_divisor)和最小公倍数(Least_common_multiple)的函数对调一下的话,编译器就会报错说不知道最大公约数这个函数(未定义),所以作用域这个问题也是不可忽略的。
总结
本章介绍了变量和函数的作用域问题,其实觉得自己写的不是太好,但是自己也没有想到太好的例子来讲这个东西,所以我们就先这样提一下,有这个意识,后面大家就会去注意这个问题了。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值