美文网首页
C语言 共同体 枚举 修饰词知识点

C语言 共同体 枚举 修饰词知识点

作者: 超级皮波9 | 来源:发表于2018-09-09 16:03 被阅读0次

共同体

  • 共同体格式:
union 共同体名称{
         数据类型  属性名称;
         数据类型  属性名称;
};
union Test {
        char ch;
        int age;
};
  • 特点
    结构体的每个属性都会占用一块单独的内存空间,而共同体所有的属性都共用一块储存空间,只要其中一个属性发生改变,其他属性都会受到影响
  • 应用场景
    同一个变量,在不同的时刻需要表示不同类型数据的时候,就可以用共同体

枚举

  • 枚举是用于提升代码的阅读性,一般用于表示几个固定的值,所以也叫做枚举常量
  • 枚举的格式
enum 枚举类型名称{
          取值1,
          取值2,
};
  • 注意点 和结构体,共用体不同,枚举是逗号隔开

枚举的规范

  • 枚举的取值一般以K开头,后面跟上枚举类型的名称,后面再跟上表达的含义,K代表这是一个常量
  • 枚举的类型名称,主要是为了有多个枚举的时候,方便区分含义,和表达的意思
  • 枚举的取值默认情况下是从0开始取值,一次递增
  • 也可以手动指定从几开始,一次递增
#include <stdio.h>

int main(){
    //枚举
    enum Gender{
        KGenderMan,
        KGenderWoman,
    };
    
    struct Person{
        enum Gender gender;
    };
    
    struct Person p;
    p.gender = KGenderMan;
    
    return 0;
}

作用域和定义

  1. 作用域和结构体/普通变量一样
  2. 定义和结构体一样

全局变量和局部变量

局部变量

  • 概念
    定义在{}中,函数中,形参都是局部变量
  • 作用域
    从定义的那一行开始,直到遇到{}结束或者遇到return为止
  • 储存位置
    局部变量会储存在内存的栈区中,会随着定义变量的代码执行分配储存空间,会随着作用域的结束而自动释放
  • 特点
    1.相同作用域内,不能出现同名的局部变量
    2.不同作用域内有用名的变量,那么在访问时,内部的会覆盖外部(就近原则)

全局变量

  • 概念
    定义在{}外挥着函数外的变量,都是全局变量
  • 作用域
    从定义的那一行开始,直到文件末尾
  • 储存位置
    全局变量会储存在内存的静态区中,会随着程序的启动分配存储空间,随着程序的结束释放
  • 特点
    如果多个同名的全局变量,系统只会分配一次空间,多个同名的全局变量共用一块储存空间

修饰符

auto//register

  • auto和register都是用于修饰局部变量的
    它们年的作用是修饰编程的存储特性
    auto: 特点就是告诉编译器, 局部变量离开作用域自动释放
    默认情况下所有局部变量都是auto的

static对局部变量的作用

  • 如果利用static修饰局部变量, 那么会将局部变量的存储区域从栈区移动到静态区
  • 静态区只有程序结束才会释放

extern 修饰词

  • extern用于声明一个变量,声明的变量并不会开辟储存空间
  • extern 一般用于全局变量
  • 原因
    局部变量,只有执行到那一行代码才会分配储存空间,所以声明了但是在使用的时候还是没有分配,所以局部变量不能使用extern
    全局变量,会随着程序的启动分配储存空间,所以只要声明了,使用时已经分配好了储存空间,所以全局变量能使用extern

static对全局变量的作用

  • 定义一个内部的全局变量,
  • 1.该变量只能在定义的文件中使用, 不能在其它文件中使用,
  • 2.并且该变量会独占一块内存空间

extern和static对函数的作用

  1. 如果利用extern修饰函数, 代表这是一个外部函数, 其它文件中也可以使用
  • 注意点: 默认情况下所有函数都是外部函数, 所有的函数都可以在其它文件中访问, 所以extern是一个废物
  1. 如果利用static修饰函数, 代表这事一个内部函数, 只能在当前文件中使用
  • 如果一些内部函数不想提供给外界使用, 那么就可以给函数添加一个static

相关文章

  • C语言 共同体 枚举 修饰词知识点

    共同体 共同体格式: 特点结构体的每个属性都会占用一块单独的内存空间,而共同体所有的属性都共用一块储存空间,只要其...

  • 位移枚举

    位移枚举 一. OC中常见的三种枚举 C语言枚举 // C语言枚举 typedef enum : NSUInteg...

  • Swift枚举

    C语言的枚举 C语言的枚举写法 我们通过枚举表示一周的七天 c语言中,枚举的第一个成员默认是为0,后面的枚举值一次...

  • 位移枚举

    位移枚举 C语言枚举定义 苹果创建枚举的定义方式

  • C语言结构体 共同体 枚举

    语言------结构体 枚举学习,有需要的朋友可以参考下。 结构体 枚举 1.局部变量: >定义.在代码块内部定...

  • Objective-C的三种枚举

    在Objective-C中可以通过三种方式来定义一个枚举类型。 一、C语言中的枚举 C语言中的枚举形如: 二、C+...

  • swift学习笔记(二)

    继续记录swift知识点: 1)枚举 枚举语法: ** 和 C 和 Objective-C 不同,Swift 的枚...

  • swift学习笔记三

    一、枚举 1.枚举语法 和C语言和Objectect语言不同,swift语言的枚举不提供默认的整型值多个枚举成员在...

  • 04-枚举常量

    Go语言枚举 c语言中的枚举 Go语言枚举 iota迭代器 Go语言输出函数 fmt.Printf("格式化字符串...

  • C语言中的枚举(enum)类型

    C语言中的枚举(enum)类型 枚举变量是C语言中的一种数据结构,在C++和Java等衍生语言(用词好像不太恰当)...

网友评论

      本文标题:C语言 共同体 枚举 修饰词知识点

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