A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 哐啷 中级黑马   /  2015-10-6 21:36  /  1230 人查看  /  10 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

谁能给大白话讲明白点 都是 干啥的 越听越晕啊

10 个回复

倒序浏览
static:

一、在C中,static主要定义全局静态变量、定义局部静态变量、定义静态函数。

1、定义全局静态变量:在全局变量前面加上关键字static,该全局变量变成了全局静态变量。全局静态变量有以下特点。

        a.在全局区分配内存。
        b.如果没有初始化,其默认值为0.
        c.该变量在本文件内从定义开始到文件结束可见。

2、定义局部静态变量:在局部变量前面加上关键字static,其特点如下:
        a.该变量在全局数据区分配内存。
        b.它始终驻留在全局数据区,直到程序运行结束。
        c. 其作用域为局部作用域,当定义它的函数或语句块结束时,其作用域随之结束。

3、定义静态函数:在函数返回类型前加上static关键字,函数即被定义为静态函数,其特点如下:

        a.静态函数只能在本源文件中使用
        b.在文件作用域中声明的inline函数默认为static类型


二、在C++中新增了两种作用:定义静态数据成员或静态函数成员。

定义静态数据成员。
    a.内存分配:静态数据成员在程序的全局数据去分配。
    b.初始化和定义:静态数据成员定义时要分配空间,所以不能在类声明中定义。


静态数据成员因为程序以开始运行就必须存在,所以其初始化的最佳位置在类的内部,public、protected、private关键字对它的限定和普通数据成员一样,因为其空间在全局数据分配,属于所有本类的对象共享。它不属于特定的类对象,在没产生类对象时,其作用域可见,即没有产生类的实例时,就可以操作它了。
静态成员函数。静态成员函数与类相联系,不与类的对象相联系。静态成员函数不能访问非静态数据成员。

extern:


      extern可以置于变量或函数前,以在别的文件中标识变量或函数的定义,并提示编译器遇到此变量或函数时在其他模块中寻找其定义。extern是C、C++语言中表明函数和全局变量作用范围(可见性)的关键字。

      对于extern变量来说,仅仅是一个变量的声明,其并不是定义,不会分配内存空间。

     extern表示将变量或函数声明为外部链接,变量默认是内部链接,函数默认是外部链接。因此用来外部链接的函数,声明时有无extern都可以连接通过。而全局变量则不行。通常,在模块的头文件中,对本模块提供给其他模块引用的函数和全局变量以关键字extern声明。
回复 使用道具 举报
顶一个!!!
回复 使用道具 举报
总结的好到位!
回复 使用道具 举报
这个我也是听的晕的
回复 使用道具 举报
多谢二楼分享!
回复 使用道具 举报
二楼讲的非常好,已经收藏,谢谢。
回复 使用道具 举报
小王这知识延伸的真不错!学到了。。。
回复 使用道具 举报
2l  总结很详细,顶一个
回复 使用道具 举报
二楼讲的不错,
回复 使用道具 举报
sclea 中级黑马 2015-10-8 19:31:47
11#
二楼已经非常详细了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马