回绝全局变量与部分变量同名【官方澳门新永利下载】

拒绝全局变量与局部变量同名
大家都知道全局变量的作用范围是从声明开始到文件结束,而局部变量的作用范围一般是在函数内
从声明开始到函数结束.当函数内的局部变量与全局变量同名时,以局部变量为准.
也就是说,全局变量在函数内部不产生任何影响.换一种说,就是当局部变量与全局变量同名的函数内
部就不能引用全局变量,也就是函数内不能用到全局变量.这是很致命的.
当函数需要获得或者修改这个全局变量的值时,这样会使得程序无法做到.因此,我们必须注意到这方面的问题,不要以为是小事.
我在这里就介绍一下我个人的来预防全局变量与局部变量同名方法:
你可以这样做,也就是这样规定:全局变量一定以下划线开始,如_全局变量名;
而局部变量名的第一个符号不能是以下划线开始.这样明确规定就可以避免同名出现.

一函数

如果已经有了全局变量名与局部变量同名,那该怎么办:
1.当发现有局部变量与全局变量同名时,把局部变量改成其它变量名.
这种方法可以对于几十或者几百行的函数来说,改起来比较容易.但对于几千行的函数来说,
改起来并不是那么容易,有时可以会把其它的代码修改了.这种问题可能造成你无法察觉.(不太可取)
2.还有一种方法那就是修改全局变量,就要修改所有的用过这个全局变量的地方.
有时,其它文件也可能会用到,这样还要修改其它文件.这样改起来,工作量非常大.(更不可取)
3.可以在函数形参中多添加一个指针类型变量,用来指向这个全局变量.
这样用起来和修改起来都非常方便.(比较方便)如:
DataType Data;/*全局变量*/
Function(…,DataType* getDataPointer)/*添加形参*/
{…}
4.可以用另外一个函数,这个函数的返回值就是这个全局变量的指针.(比较好)
如:
DataType Data;/*全局变量*/
DataType* GetDataPointer(void)/*添加函数*/
{return &Data;}

1.函数的基本概念

函数就是把代码中功能相似并且独立的代码单独封装成一个整体;

以上的讲解,希望大家在今后的编程中注意这方面的问题.

(1)函数优点

提高代码的简洁性,挺高开发效率
提高代码的重用性
有利于程序的维护

(2)函数的分类

系统函数:
由C标准库提供的函数;如:printf()scanf()gets()
用系统函数时,只需将其对应的头文件包含起来,即可
exampl:
#include<stdio.h>——>printf(“hello!”);
pow(a,b);——>计算a的b次方
自定义函数:
用户根据需要自己定义的函数;
分类二:
有返回值函数:
函数调用结束后,会返回一个数值给主调函数;
无返回值函数;
函数结束后,无返回值,一般定义为viod函数,即空类型
分类三:
有参函数:
参数可以任意多
无参函数:

2.函数的基本定义L

(1)无参函数的定义

DataType FunctionName()
{
//函数体
//可执行语句
}
注:函数名背后的括号不可以省略!!!

(2)有参函数的定义

DataType FunctionName(Type arg1,Type arg2)—->(括号内为参数列表)
{
//函数体
}
注:参数列表可以有多个,参数的类型可以任意(相对)!

(3)函数的定义,函数的声明以及函数的调用

函数的定义
DataType FunctionName(参数列表);
{
//函数体
}
函数的声明:
DataType FunctionName(参数列表);
注:
声明时,参数列表一定要和定义时的参数列表一致!!!
后面的分号不可省略!!
放在函数被调用之前的任意
函数的调用;
FunctionName(value);
value:数值
注:
函数调用时,实参的类型,一定要和函数定义时的形参列表一致!
实参:
实际参数,即具体的数值
函数调用时的参数都是实参
形参;
形式参数,形参的定义和普通变量的定义无区别
函数定义及声明时的参数
注:函数名表示函数的入口地址,函数之间没有优先级问题,函数之间是等价的,即平行关系!!!
形参在发生调用时分配空间!!!
在发生我那个函数调用时,系统会默认将实参的值付给形参

发表评论

电子邮件地址不会被公开。 必填项已用*标注