11-黑马程序员------C 语言学习笔记---C语言的变量的作用域和储存类型

黑马程序员------<a href="http://www.itheima.com" target="blank">Java培训、Android培训、iOS培训、.Net培训</a>、期待与您交流! -------

五 变量的作用域和储存类型

01 变量的作用域是指该变量有效地区域,C语言中得变量分为局部变量和全局变量。

02 局部变量:

*局部变量的作用域仅限于定义它的代码块内,离开代码块内便失去作用。

*形参只有在函数内有效,其也属于局域变量,作用域被限定在定义它的函数内部。

*当代码块处于嵌套状态时,如果内层代码块有一个变量的名字与外层代码块相同,则内层的变量就将屏蔽外层的变量。

// 利用全局变量写一个函数,求某班级学生成绩的最高分,最低分和平均分
#include <stdio.h>
double max=0,min=100; // 定义全局变量
double average(int m);// 函数声明

int main()

{
    int n;
    double ave;

    printf("请输入人数:\n");// 输入班级人数

    scanf("%d",&n); // 接受班级人数

    ave = average(n); // 调用函数

    printf("ave=%f,max=%f,min=%f\n",ave,max,min);

}

double average(int m)
{
    int i;
    double s,ave,sum;
    for (i=1; i<=m; i++)
    {
        scanf("%lf",&s);
        if (s>max)
        {
            max = s;
        }
        if (s<min)
        {
            min = s;
        }
        sum = sum+s;
    }
    ave =sum/m;
    return ave;

}

03 全局变量

01 定义在函数外部的变量称为全局变量,它定义在函数外边,不属于任何函数和代码块,而属于整个源文件。其有效位置从定义变量的位置开始到源文件结束。

02 static静态局部变量,其在整个源程序中都存在,系统自动赋值为0,可以保留上次运行结果。

03 extern 外部变量,在同一个文件内,为了使全局变量在定义点之前的函数中也能使用,在函数中用extern加以声明。

当一个源程序由若干源文件组成时,在一个源文件中定义的外部变量可以在其他源文件中使用extern进行声明,使其在其他源文件中可以使用。

// 编写一个函数求圆的面积
#include <stdio.h>

double area(double r)
{

    extern double P; // 外部声明
    return P*r*r; // 面积公式

}

double P = 3.14; // 定义全局变量P并初始化,自此作用域往下有效
int main()
{
    double r;
    printf("请输入圆的半径:\n");

    scanf("%lf",&r);

    printf("area=%f\n",area(r));

}
时间: 2024-10-10 15:25:22

11-黑马程序员------C 语言学习笔记---C语言的变量的作用域和储存类型的相关文章

黑马程序员--java基础学习笔记5

黑马程序员--java基础学习笔记6 一.笔记内容概述: 数组-第二种定义格式.数组-常见操作-遍历-最值-选择排序-冒泡排序-排序位置置换代码提取.数组-排序的性能问题.数组-常见功能-查找-折半查找.进制转换-查表法-整合. 二.常用内容介绍: 1.数组初始化的三种方式: int[] arr = new int[3]; int[] arr = new int[]{1,2,3}; int[] arr = {1,2,3}; 2.查表法: 如果数据中出现了对应关系,而且对应关系的一方是有序的数字编

黑马程序员--Java基础学习笔记【正则表达式、常用API】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 正则表达式 正则表达式的组成规则 java.util.regex.Pattern 常见组成规则 字符集合 [abc] a.b.c中任意一个字符 [^abc] 除了a.b.c的任意字符 [a-z] a-z中的任意一个字符 [a-zA-Z0-9] a-z.A-Z.0-9中任意一个字符 [a-z&&[^bc]] a-z中除了b和c以外的任意一个字符 预定义字符集 .任意一个字符 \d 任意一个

黑马程序员--java基础学习笔记8

 一.笔记内容概述: 面向对象(数组工具对象建立-文档注释-单例设计模式&内存图解).继承.单继承和多重继承. 二.常用内容介绍: 1.继承的好处:提高了代码的复用性;让类与类之间产生了关系;开发最终的核心内容:不断地创建对象,使用对象,并维护着对象之间的关系. 2.什么时候使用继承? 当类与类之间存在着所属关系的时候,就定义继承;java不直接支持多继承,因为多个父类中如果有相同成员时,就会出现调用的不确定性;java中通过多实现implements的方式来间接体现多继承; 3.如何学习一

黑马程序员_ 基础学习笔记总结

------- android培训.java培训.期待与您交流! ---------- 1.java api System.getProperties()方法 该方法返回一个Properties对象,这个对象里存储的是java虚拟机启动时系统的基本资料,如操作系统类型(windows.linux..),系统使用语言,系统默认字符集等.当java开发跨平台代码时常常需要根据运行程序的操作系统类型做一些特定操作,就可以通过System.getProperties()返回的对象检查系统类型. 2.ja

黑马程序员--Java基础学习笔记【单例设计模式、网络编程、反射】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 设计模式分类: 创建模式:是对类的实例化过程的抽象化,又分为类创建模式和对象创建模式 类创建模式:工厂方法模式 对象-:简单工厂(静态工厂方法)模式.抽象工厂模式.单例模式.建造模式- 结构模式:描述如何将类或者对象结合在一起形成更大的结构 适配器模式.缺省模式.合成模式.装饰模式(包装模式).门面模式- 行为模式:对不同的对象之间划分责任和算法的抽象化 不变模式.策略模式.迭代子模式.命令模

黑马程序员--Java基础学习笔记【序列化、多线程】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 序列化流与反序列化流 ObjectOutputStream 对象输出流 writeObject(Object obj) 可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中 ObjectInputStream对象输入流 readObject(Objectobj) 从源输入流中读取字节序列,反序列化为一个对象并返回 序列化:将数据分解成字节流,以便存储在文件中或在网络上传输

黑马程序员--Java基础学习笔记【异常处理】

------Java培训.Android培训.iOS培训..Net培训.期待与您交流! ------- 异常 异常就是Java程序在运行过程中出现的导致程序无法正常运行的错误. Java 中异常继承体系,顶层的类 java.lang.Throwable java.lang.Exception 所有异常的超类 RuntimeException 运行时异常可以不处理 非RuntimeExceptioin非运行时异常必须捕获处理 java.lang.Error 所有错误的超类 异常处理机制 当程序中抛

黑马程序员--java基础学习笔记6

一.笔记内容概述: 面向对象(概述&举例).类与对象的之间的关系.类与对象体现&细节.对象的内存体现.成员变量和局部变量的区别.类类型参数.匿名对象.基本数据类型参数传递图解.引用数据类型参数传递图解.封装&代码示例.面向对象(封装&思想).二维数组&定义方式&内存图解&另一种定义方式&应用场景. 二.常用内容介绍: 1.面向对象的特征: a.封装:将具体动作封装起来,方便调用,提高了代码的复用性和安全性. b.继承:继承某个类后,可以直接调

黑马程序员--java基础学习笔记4

一.笔记内容概述: 函数-定义.函数-格式.函数-细节-void.函数-细节-错误格式.函数-细节-定义思想错误.函数-两个明确.函数-内存加载过程.函数-重载.数组-概述.数组-定义.数组-内存空间划分.数组-栈内存-堆内存.数据常见问题. 二.常用内容介绍: 1.编写函数体时,两个明确: a.这个功能的结果是什么?(其实就是在明确函数的返回值类型). b.这个功能的实现过程中是否需要未知内容参与运算?(其实就是在明确参数列表). c.函数返回值类型与参数列表中的参数类型没有关系.(看下面)

黑马程序员--java基础学习笔记3

一.笔记内容概述: 比较运算符&逻辑运算符.位运算符.移位运算符.三元运算符.if语句.局部代码块.switch语句.while语句.do-while语句.for循环语句.循环结构的使用场景. 二.常用内容介绍: 1.>>>无符号右移,数据进行右移时,高位出现的空位,无论原来的最高位是什么,空位都用0补. 2.^运算符的特点: true ^ true = false; true ^ false = true; false ^ true = true; true ^ true =