仔细瞧过来!计算机二级C语言入门教程:变量的作用域和存储类型(一)

发布于 2018-08-02 10:30  编辑:jokex
0
计算机等级考试题库 扫码微信刷题

小编所收集到的相关计算机二级C语言入门教程:变量的作用域和存储类型的资料 大家要认真阅读哦!



一、作用域和生存期

C程序的标识符作用域有三种:局部、全局、文件。标识符的作用域决定了程序中的哪些语句可以使用它,换句话说,就是标识符在程序其他部分的可见性。通常,标识符的作用域都是通过它在程序中的位置隐式说明的。

1.局部作用域

前面各个例子中的变量都是局部作用域,他们都是声明在函数内部,无法被其他函数的代码所访问。函数的形式参数的作用域也是局部的,它们的作用范围仅限于函数内部所用的语句块。

void add(int);

main()

{

int num=5;

add(num);

printf(%d\n,num); /*输出5*/

}

void add(int num)

{

num++;

printf(%d\n,num); /*输出6*/

}

 

上面例子里的两个num变量都是局部变量,只在本身函数里可见。前面我们说了,在两个函数出现同名的变量不会互相干扰,就是这个道理。所以上面的两个输出,在主函数里仍然是5,在add()函数里输出是6。


2.全局作用域

对于具有全局作用域的变量,我们可以在程序的任何位置访问它们。当一个变量是在所有函数的外部声明,也就是在程序的开头声明,那么这个变量就是全局变量。

void add(int);

int num;

main()

{

int n=5;

add(n);

printf(%d\n,num); /*输出6*/

}

void add(num) /*形式参数没有指定类型*/

{

num++;

printf(%d\n,num); /*输出6*/

}

上面的main()和add()里面,并没有声明num,但是在最后输出的时候却要求输出num,这是由于在程序的开始声明了num是全局变量,也就是在所有函数里都可以使用这个变量。这时候一个函数里改变了变量的值,其他函数里的值也会出现影响。上面的例子输出都是6,因为在add()函数里改变了num的值,由于num是全局变量,就好象它们两个函数共用一个变量,所以在main()函数里的num也随之改变了。


3.文件作用域

在很多C语言书上,都没有说明文件作用域,或者只是略微的提到,其实文件作用域在较大程序中很有作用(在多文件系统中)。文件作用域是指外部标识符仅在声明它的同一个转换单元内的函数汇总可见。所谓转换单元是指定义这些变量和函数的源代码文件(包括任何通过#include指令包含的源代码文件)。static存储类型修饰符指定了变量具有文件作用域。

static int num;

static void add(int);

main()

{

scanf(%d,&num);

add(num)

printf(%d\n,num);

}

void add(num)

{

num++;

}

上面的程序中变量num和函数add()在声明是采用了static存储类型修饰符,这使得它们具有文件作用域,仅爱定义它们的文件内可见。

由于我们提到的大多数程序都只有一个编译文件组成,所以这种写法没有实际意义。但是实际工程上的文件有很多,它们不是由一个人写成的,由很多人共同完成,这些文件都是各自编译的,这难免使得某些人使用了一样的全局变量名,那么为了以后程序中各自的变量和函数不互相干扰,就可以使用static修饰符,这样在连接到同一个程序的其他代码文件而言就是不可见的。




文字很枯燥,但内容却很丰富,小编在此祝大家都能考出让自己满意的成绩哦!

继续了解计算机二级C语言?点击下方链接,进入考无忧官方网站,更多精彩等你来!

小编特别推荐二级ms office可以了解一下噢! 毕竟这项科目着实相比其他科目比较容易啦!


文章推荐:

2018年全国计算机等级考试都有哪些科目?

2018年全国计算机考试报名为什么照片上传不成功?

2018年全国计算机等级考试一二三四级最新考试大纲汇总


温馨提示:

想要了解更多试题请点击查看>>>计算机二级考试题库

考试想拿高分吗?更多二级ms office试题请点击查看>>>二级ms office

想知道更多关于计算机等级考试的最新资讯吗?点击进入>>>计算机等级考试




本文网址:http://www.k51.com.cn/info/jsjdjks/1808/0242664.html
选择分享到: