c语言共同体作用,C语言 共同体 枚举 修饰词知识点

共同体

共同体格式:

union 共同体名称{

数据类型 属性名称;

数据类型 属性名称;

};

union Test {

char ch;

int age;

};

特点

结构体的每个属性都会占用一块单独的内存空间,而共同体所有的属性都共用一块储存空间,只要其中一个属性发生改变,其他属性都会受到影响

应用场景

同一个变量,在不同的时刻需要表示不同类型数据的时候,就可以用共同体

枚举

枚举是用于提升代码的阅读性,一般用于表示几个固定的值,所以也叫做枚举常量

枚举的格式

enum 枚举类型名称{

取值1,

取值2,

};

注意点 和结构体,共用体不同,枚举是逗号隔开

枚举的规范

枚举的取值一般以K开头,后面跟上枚举类型的名称,后面再跟上表达的含义,K代表这是一个常量

枚举的类型名称,主要是为了有多个枚举的时候,方便区分含义,和表达的意思

枚举的取值默认情况下是从0开始取值,一次递增

也可以手动指定从几开始,一次递增

#include

int main(){

//枚举

enum Gender{

KGenderMan,

KGenderWoman,

};

struct Person{

enum Gender gender;

};

struct Person p;

p.gender = KGenderMan;

return 0;

}

作用域和定义

作用域和结构体/普通变量一样

定义和结构体一样

全局变量和局部变量

局部变量

概念

定义在{}中,函数中,形参都是局部变量

作用域

从定义的那一行开始,直到遇到{}结束或者遇到return为止

储存位置

局部变量会储存在内存的栈区中,会随着定义变量的代码执行分配储存空间,会随着作用域的结束而自动释放

特点

1.相同作用域内,不能出现同名的局部变量

2.不同作用域内有用名的变量,那么在访问时,内部的会覆盖外部(就近原则)

全局变量

概念

定义在{}外挥着函数外的变量,都是全局变量

作用域

从定义的那一行开始,直到文件末尾

储存位置

全局变量会储存在内存的静态区中,会随着程序的启动分配存储空间,随着程序的结束释放

特点

如果多个同名的全局变量,系统只会分配一次空间,多个同名的全局变量共用一块储存空间

修饰符

auto//register

auto和register都是用于修饰局部变量的

它们年的作用是修饰编程的存储特性

auto: 特点就是告诉编译器, 局部变量离开作用域自动释放

默认情况下所有局部变量都是auto的

static对局部变量的作用

如果利用static修饰局部变量, 那么会将局部变量的存储区域从栈区移动到静态区

静态区只有程序结束才会释放

extern 修饰词

extern用于声明一个变量,声明的变量并不会开辟储存空间

extern 一般用于全局变量

原因

局部变量,只有执行到那一行代码才会分配储存空间,所以声明了但是在使用的时候还是没有分配,所以局部变量不能使用extern

全局变量,会随着程序的启动分配储存空间,所以只要声明了,使用时已经分配好了储存空间,所以全局变量能使用extern

static对全局变量的作用

定义一个内部的全局变量,

1.该变量只能在定义的文件中使用, 不能在其它文件中使用,

2.并且该变量会独占一块内存空间

extern和static对函数的作用

如果利用extern修饰函数, 代表这是一个外部函数, 其它文件中也可以使用

注意点: 默认情况下所有函数都是外部函数, 所有的函数都可以在其它文件中访问, 所以extern是一个废物

如果利用static修饰函数, 代表这事一个内部函数, 只能在当前文件中使用

如果一些内部函数不想提供给外界使用, 那么就可以给函数添加一个static

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值