美文网首页我爱编程
C语言中,全局变量与局部变量同名时,如何判断

C语言中,全局变量与局部变量同名时,如何判断

作者: 凌云C语言游戏开发 | 来源:发表于2018-04-17 07:36 被阅读0次

    C语言是面向过程的,而C++是面向对象的

    C和C++的区别:

    C是一个结构化语言,它的重点在于算法和数据结构。C程序的设计首要考虑的是如何通过一个过程,对输入(或环境条件)进行运算处理得到输出(或实现过程(事务)控制)。

    C++,首要考虑的是如何构造一个对象模型,让这个模型能够契合与之对应的问题域,这样就可以通过获取对象的状态信息得到输出或实现过程(事务)控制。 所以C与C++的最大区别在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”。

    C与C++的最大区别:在于它们的用于解决问题的思想方法不一样。之所以说C++比C更先进,是因为“ 设计这个概念已经被融入到C++之中 ”,而就语言本身而言,在C中更多的是算法的概念。那么是不是C就不重要了,错!算法是程序设计的基础,好的设计如果没有好的算法,一样不行。而且,“C加上好的设计”也能写出非常好的东西。

    在写C语言程序的时候,变量分为“全局变量”和“局部变量”。它们主要是“作用域”的不同,“全局变量”,作用域在整个C语言源文件之内;而“局部变量”,作用域在一对大括号内。

    若是在同一个作用域内,定义两个“重名”的变量时,程序会报错。比如,如下程序,在程序编译时,就会产生错误信息:

    上述C语言代码是错误的,在编译时,产生的错误信息如下所示:

    因为在第5行和第6行,在main函数之内,同时定义了两个“同名”变量num,所以,程序在编译的时候就会报错。但是,如果将其中一个num变量,定义在main函数的外面,那么就不会报错了。如下图所示程序:

    上述C语言程序中,在第3行,定义了一个变量num,在第7行也定义了一个变量num,虽然这两个变量的名字相同,都是“num”,但是,其中一个变量属于“全局变量”,作用域在整个C语言源文件;另一个(第7行)定义的变量,属于“局部变量”,作用域在main函数中,所以,它们是不冲突的,程序在编译的时候,也不会报错。最终,程序执行的结果,以“局部变量”的值为准,程序执行结果如下图所示:

    我们看到,最终,num的值,取的是第7行定义的变量的值。它属于“局部变量”,这是一种“就近原则”。这种“就近原则”,除了C语言之外,其它一些代码语言中,也会被体现到。比如在web开发的js代码中,如果将变量写在一个函数之内,另一个同名的变量,写在函数之外,在这门语言里,和C语言是一样的,也是会有“作用域”的概念,同样会有一个“就近原则”。所以,我们理解了C语言中变量作用域的“就近原则”,也有利于学习其它的一些编程语言。

    相关文章

      网友评论

        本文标题:C语言中,全局变量与局部变量同名时,如何判断

        本文链接:https://www.haomeiwen.com/subject/ehzykftx.html