zoukankan      html  css  js  c++  java
  • 标识符起作用范围----作用域、连接类型、存储期

    何谓标识符?

    标识符就是人为起的一个名字。c/c++中,是你用来标识变量名、符号常量名、函数名、数组名、文件名、类名、对象名等...

    1.作用。

    包括一下四个分类:

    a.代码块的作用域(存在于大括号之间)

    b.文件的作用域(可以说这个作用域的分类完全是为了彰显全局变量在的作用而设定的,因为全局变量可以贯穿)

    c.函数原型的作用域------函数声明的作用

    d.函数作用域(用于goto语句使用),标志出现在函数前后都可以使用【所以即使在代码块中,但不属于代码块的作用域】

    2.链接类型

    a.外部链接类型----对外公开的,要求是全局变量,一般指静态变量

    extern int val1;
    extern void say_hello(); 

    附加:extern的用法:

      extern可以置于变量或者函数前,以表示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。另外,extern也可用来进行链接指定。也就是说,定义extern int val后,编译器就会尝试到这个文件关联的文件中(一般使用include进行包含的)进行查询,查询是否有int val这样的变量定义语句。若找到即说明val在另一个文件中已经被定义,此时val就是另一个文件所定义的val。在此文件中修改它的值在另一个文件中也是有效的!

    b.内部链接----本文件私有的,静态变量

    1 static int var2;
    2 static void say_hello();

    c.无链接---局部变量,一般指函数内部的变量

    3.存储期

    a.自动存储期:被存放在栈。在函数内部定义的变量属于自动存储期

    b.静态存储期:被存放在数据段中。全局变量属于静态存储期,另外,静态存储期也可以出现在函数内部,但是要在定义的时候加上static(如 static int c = 300;)

    c.动态存储期:被存放在堆中。一般动态变量的使用时用到!

    1 int * p = malloc(20);    //分配,用指针p指向匿名内存
    2 free(p);        //释放所分配的匿名内存
  • 相关阅读:
    PTA 5-3 树的同构 ——理解递归
    停车管理系统
    两个有序链表序列的合并 (15分)
    lua 面向对象笔记 继承 和 组合
    二叉树高度计算,判定是否为平衡二叉树
    会用git的重要性,记工作中使用git reset 代码丢失的教训
    #include <bits/stdc++.h> 万能头文件
    C++中类的静态变量成员
    C++创建对象加括号和不加括号的区别
    deepin(深度系统)安装微信 qq
  • 原文地址:https://www.cnblogs.com/simonLiang/p/5719889.html
Copyright © 2011-2022 走看看