黑马程序员-C语言之变量的作用域问题
来源:互联网 发布:qq群推广软件 编辑:程序博客网 时间:2024/05/08 15:16
变量的作用域分为两种:局部变量和全局变量
1)局部变量(函数内部或或者代码块内部定义的变量,离开这个函数或代码块就不起作用了)
局部变量也称为内部变量。局部变量是在函数内作定义说明的。其作用域仅限于函数内, 离开该函数后再使用这种变量是非法的。
(1)主函数中定义的变量也只能在主函数中使用,不能在其它函数中使用。同时,主函数中也不能使用其它函数中定义的变量。因为主函数也是一个函数,与其它函数是平行关系。
(2)形参变量是属于被调函数的局部变量,实参变量是属于主调函数的局部变量。
(3)允许在不同的函数中使用相同的变量名,它们代表不同的对象,分配不同的单元,互不干扰,也不会发生混淆。虽然允许在不同的函数中使用相同的变量名,但是为了使程序明了
易懂,不提倡在不同的函数中使用相同的变量名.
#include<stdio.h>
int main(int argc , const char *argv[]){
int age=0;//age是一个局部变量
printf("age=%d\n",age);
{
int age1=10;
printf("age1=%d\n",age1);
age=100;//访问上面的age,对其进行新的赋值,说明局部变量也不是据对的,是相对的。
printf("age=%d\n",age);//在代码块的内部可以定义与代码块的外部相同名字的变量。
int age=1;
printf("age=%d\n",age);//1 这个是局部变量,除了代码块就释放。
}//代码块结束,释放代码块里定义的变量等其他数据。
printf("age=%d\n",age);//100
return 0;
}
打出的结果就是age=100。
2)全局变量
全局变量也称为外部变量,它是在函数外部定义的变量(作用域从开始定义的地方开始,一直到代码结束,各个函数都可以使用)。
(1)对于局部变量的定义和说明,可以不加区分。而对于外部变量则不然,外部变量的定义和外部变量的说明并不是一回事。外部变量定义必须在所有的函数之外,且只能定义一
次。其一般形式为: [extern] 类型说明符变量名,变量名... 其中方括号内的extern可以省去不写。
(2)而外部变量说明出现在要使用该外部变量的各个函数内,在整个程序内,可能出现多次,外部变量说明的一般形式为: extern 类型说明符变量名,变量名,...; 外部变量在定义时就
已分配了内存单元,外部变量定义可作初始赋值,外部变量说明不能再赋初始值, 只是表明在函数内要使用某外部变量。
(3)外部变量可加强函数模块之间的数据联系,但是又使函数要依赖这些变量,因而使得函数的独立性降低。从模块化程序设计的观点来看这是不利的, 因此在不必要时尽量不要
使用全局变量。
(4)在同一源文件中,允许全局变量和局部变量同名。在局部变量的作用域内,全局变量不起作用。
- 黑马程序员-C语言之变量的作用域问题
- 黑马程序员---C语言变量作用域
- 黑马程序员IOS-C语言-指针、变量作用域
- 黑马程序员_C语言中变量作用域问题
- 黑马程序员------C语言中变量的概念,初始化和引用以及作用域
- 黑马程序员---Objective-C 成员变量的作用域
- 黑马程序员——C语言之全局变量和局部变量以及static和extern修饰符的作用
- 黑马程序员IOS基础---C语言学习之static和extern关键字对函数以及变量的作用
- 黑马程序员----C语言变量作用域,存储类型,变量总结,递归思想篇
- 黑马程序员——c语言学习—变量作用域
- 黑马程序员——IOS学习笔记(C语言存储方式和变量作用域)
- 【黑马程序员】【C语言】变量
- C语言中变量作用域问题
- C语言之变量的作用域及存储方式
- 黑马程序员-C语言之全局变量和局部变量
- 黑马程序员——Objective-C——点语法、变量的作用域
- 黑马程序员IOS基础---C语言学习之变量与内存及重要的scanf函数
- 黑马程序员——C语言基础语法(关键字、标识符、注释符、变量、作用域、printf函数、Scanf函数)
- Pig 和 Hive 的表连接 Join
- 学生信息管理系统
- 在C++中为数组动态分配内存
- 开源集合-GridView相关特效效果
- 把一个文件的内容付到别一个文件中
- 黑马程序员-C语言之变量的作用域问题
- 辛星浅析网站中的sitemap
- hash 乱搞=。=
- leetcode String to Integer (atoi)
- 开源集合-Android中的图片缓存,异步加载图片,内存溢出
- 如何降低自己的gcc版本--解决ubuntu12.04编译layer的问题
- EBlearn中画sigmoid函数的多项式拟合方法
- Volley详解
- 使用OGG"Loading data from file to Replicat"的方法应该注意的问题:replicat进程是前台进程