关于static和extern,union,enun

有些东西太傻了,不好意思写在别的地方……

 

static和extern的例子

 

-C里的static

 

--static全局变量

 

 

这段代码执行的结果是22

                              23

1)倘若把file1里的n设置为static,则会报错;

2)若完成第一步后再将file2里的extern去掉,则执行结果22

                                                                               1

所以,static全局变量的含义在于把该全局变量范围限定在文件内,而extern则是一个声明,表示该全局变量不是此文件初始定义,而是在别的文件里使用的,需要到另一个文件里去查找定义。

 

--static局部变量

 

static局部变量在全局数据区保存,只初始化一次,随着定义的函数或语句块结束而结束。

看下面的例子

 

这样,在两次调用之间可以保存局部变量的值,如果定义一个全局变量来实现,变量就不再属于函数本身了,不再仅受函数的控制,给程序的维护带来不便。

 

--static函数

 

在函数的返回类型前加上static关键字,函数即被定义为静态函数。静态函数与普通函数不同,它只能在声明它的文件当中可见,不能被其它文件使用。

 

定义静态函数的好处:

—C++里的static

 

 

 

 

 

 

关于union

 

转一个例子来说明

[例7.15]设有一个教师与学生通用的表格,教师数据有姓名,年龄,职业,教研室四项。学生有姓名,年龄,职业,班级四项。 
编程输入人员数据, 再以表格输出。

 

 

 

本例程序用一个结构数组body来存放人员数据, 该结构共有四个成员。其中成员项depa是一个联合类型, 这个联合又由两个成员组成,一个为整型量class,一个为字符数组office。在程序的第一个for语句中,输入人员的各项数据,先输入结构的前三个成员name,age和job,然后判别job成员项,如为"s"则对联合depa·class输入(对学生赋班级编号)否则对depa·office输入(对教师赋教研组名)。 

 

关于enum

 

枚举类型,自动赋值,相当于常量。

 

 

  • 静态函数不能被其它文件所用;

  • 其它文件中可以定义相同名字的函数,不会发生冲突

  • 出现在类体外的函数定义不能指定关键字static;

  • 静态成员之间可以相互访问,包括静态成员函数访问静态数据成员和访问静态成员函数;

  • 非静态成员函数可以任意地访问静态成员函数和静态数据成员;

  • 静态成员函数不能访问非静态成员函数和非静态数据成员;

  • 由于没有this指针的额外开销,因此静态成员函数与类的全局函数相比速度上会有少许的增长;

  • 调用静态成员函数,可以用成员访问操作符(.)和(->)为一个类的对象或指向类对象的指针调用静态成员函数,也可以直接使用如下格式:
    <类名>::<静态成员函数名>(<参数表>)
    调用类的静态成员函数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值