我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++ static的作用是什么

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++ static的作用是什么

这篇“C++ static的作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++ static的作用是什么”文章吧。

1. 隐藏

当同时编译多个文件时,所有未加 static 前缀的全局变量和函数都具有全局可见性。

下面是一个简单的例子:

假设我们要编译两个文件 a.c 和 main.c

// a.cchar a = 'A';void msg(){    printf("Hello\n");}
//main.cint main(void){    extern char a;    print(“%c ”, a);    (void)msg();    return 0;}

此时程序运行的结果是:

A Hello

而如果在 a 和 msg 定义前加了 static,那么 main.c 就无法使用它们了。利用这一特性可以避免命名冲突。

对于函数来说,static 的作用仅限于隐藏。而对于变量来说,它还有其他作用。

2. 保持变量内容的持久

储存在静态数据区的变量会在程序刚开始运行时完成它唯一的一次初始化,它与全局变量一起储存在静态存储区,只不过 static 的作用域不一定是全局的。

说到底,这其实也可以理解为一种隐藏。

int func(void){    static int count = 10; //仅在初始化时被执行了一次,静态变量只会进行一次初始化    return count—-;}int count = 1;int main(void){    printf(“global\t\tlocal static\n”);    for (; count<=10; count++)    {        printf(“%d\t\t%d\n”, count, func());    }    return 0;}

3. 默认初始化为 0

全局变量也有这一特点,因为它也存储在静态数据区。

在静态数据区中,所有的字节默认值都是 0x00,利用这一特点可以减少工作量。

如初始化一个稀疏矩阵,就能省去把所有位置置 0 的操作。

4. 多个对象之间数据共享

在类中,静态成员可实现多个对象的数据共享,而且由于隐藏的特点,它也同时保证了安全性。

静态成员的初始化格式:<数据类型><类名>:: <静态成员名>=<值>

  • 初始化在类体外进行,而且前面不加 static,以免与静态变量或对象混淆。

  • 初始化时不加访问权限控制符 private public 等

  • 初始化时用作用域运算符标明它所属的类。由此也可以看出静态数据成员是类的成员,而不是对象的成员。

引用静态数据成员的格式:<类名>:: <静态成员名>

下面是几个例子:

class Point{public:    void output() {}    static void init()    {        x = 0;        y = 0;    }private:    int x;    int y;}int main(void){    Point:: init();    return 0;}

报错,因为非静态数据成员此时还没有分配内存。

class Point{public:    void output() {}    static void init()    {        x = 0;        y = 0;    }private:    static int x;    static int y;}int main(void){    Point:: init();    return 0;}

报错,因为静态成员变量需要进行初始化。

5. 注意

类的静态成员函数属于整个类,因此没有 this 指针,这就导致了它仅能访问静态数据和静态成员函数。

不能将静态成员函数定义为虚函数。

对静态成员进行取地址操作会有些特殊,变量地址是指向其数据类型的指针,函数地址类型是一个 “nonmember 函数指针”。

由于没有 this 指针,所以相当于 nonmember 函数,这就有一个好处:成为一个 callback 函数,使得我们将 C++ 和 C-based X Window 系统结合,也成功应用于线程函数身上。

父类和子类共享静态成员。为了防止父类的影响,可以在子类中定义一个与父类相同的静态变量,以屏蔽父类的影响。这不会引起错误,因为编译器采用了 name-mangling 方法以生成唯一的标志。

以上就是关于“C++ static的作用是什么”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++ static的作用是什么

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++ static的作用是什么

这篇“C++ static的作用是什么”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C++ static的作用是什么”文章吧
2023-07-05

c++中static的作用是什么

在C++中,`static`关键字有以下几种作用:1. 静态变量:在函数内部声明的静态变量在程序运行期间只被初始化一次,并且在函数运行结束后仍然保留其值,下次再调用该函数时将继续使用上次的值。```cppvoid func() {stati
2023-10-12

static在c++中的作用是什么

在C++中,关键字static有以下几种作用:1. 修饰变量:当static修饰一个局部变量时,该变量在程序的生命周期内只被初始化一次,并且在函数调用结束后仍然保持其值,直到下一次函数调用时才会重新初始化。当static修饰一个全局变量时,
2023-08-31

C 语言中 static 的作用是什么

这篇文章给大家介绍C 语言中 static 的作用是什么,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。static 用来说明静态变量。如果是在函数外面定义的,那么其效果和全局变量类似,但是,static定义的变量只能在
2023-06-03

C#中Static修饰的作用是什么

这篇文章将为大家详细讲解有关C#中Static修饰的作用是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1.类的静态成员:classA { private staticints_
2023-06-18

c语言关键字static的作用是什么

在C语言中,关键字static有以下几种作用:1. 静态变量:static关键字可以用于声明静态变量,静态变量存储在静态存储区,在程序运行期间一直存在,其作用域为局部作用域,但其生命周期为整个程序运行期间。静态变量的初始值默认为0,只会被初
2023-09-14

java中static的作用是什么

在Java中,static关键字的作用主要有以下几个方面:1. 静态变量:static关键字用于定义静态变量,也称为类变量。静态变量属于类而不是实例对象,它在类加载时被初始化,并且所有实例对象共享同一份静态变量的副本。2. 静态方法:sta
2023-08-19

C语言中static关键字的作用是什么

本篇内容介绍了“C语言中static关键字的作用是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!static这个关键字是“静态”的意思,
2023-07-05

static在Java中的作用是什么

在Java中,static关键字有以下几个作用:1. 静态变量:使用static关键字声明的变量称为静态变量(类变量),它们存储在静态存储区,不随对象的创建而创建,属于类本身。静态变量可以通过类名直接访问,而不需要实例化对象。2. 静态方法
2023-08-31

static在c++中的作用

static++ 在 c++ 中的作用在 C++ 中,static 关键字用于控制变量、函数和类的作用域和生命周期。变量在函数内部声明为 static 的变量称为静态局部变量。静态局部变量在第一次执行函数时被初始化,并保留在函数的整个
static在c++中的作用
2024-05-06

C++static的作用解读

这篇文章主要介绍了C++static的作用及说明,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
2023-02-21

C++的static静态成员是什么

今天小编给大家分享一下C++的static静态成员是什么的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、静态成员即在定义前
2023-06-29

java中static关键字的作用是什么

在Java中,static关键字有以下几种作用:1. 静态变量:使用static关键字修饰的变量称为静态变量,也叫类变量。静态变量在整个类中只有一份拷贝,被所有对象共享。静态变量可以通过类名直接访问,无需创建对象。2. 静态方法:使用sta
2023-08-22

c++中static的作用和用法

c++ 中的 static 关键字用于声明静态变量、函数或类成员,使其在程序生命周期内存在或与类的每个实例关联。具体用法如下:静态变量:在函数外声明,仅创建一份副本,在程序启动时初始化且值保留至程序结束。静态函数:在类或结构体外声明,无法访
c++中static的作用和用法
2024-05-14

c++中static的用法和作用

c++ 中的 static 关键字用于修改变量、函数和类成员,指示编译器保留其作用域和存储持续时间。其用法包括:声明 static 变量以保留函数调用或对象销毁后的值。声明 static 成员变量以在类的不同实例之间共享数据。使用 stat
c++中static的用法和作用
2024-05-08

Java中static静态变量的作用是什么

Java中的static关键字可以用来修饰变量,使其成为静态变量。静态变量具有以下特点和作用:1. 共享性:静态变量属于类而不是实例对象,所有实例对象共享同一个静态变量。当一个实例对象修改了静态变量的值,其他实例对象也会受到影响。2. 生命
2023-09-14

c++中static关键字的作用

在 c++ 中,static 关键字用于声明变量或函数,使其仅在声明的范围内可见,在程序启动时分配内存,并且保持不变。此外,它还允许跨函数和文件共享数据、存储常量、创建静态局部变量并定义类级函数。C++ 中 static 关键字的作用在
c++中static关键字的作用
2024-05-15

C语言中static和auto用法是什么

这期内容当中小编将会给大家带来有关C语言中static和auto用法是什么,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。static的第一种用法:定义为静态变量何为静态变量?存储在静态数据区的变量会在程序
2023-06-26

static在c语言中的作用

static关键字在c语言中用于限制变量的作用域和生命周期。限制文件局部变量的作用域,使其只在本文件中访问。限制函数局部变量的作用域,使其只在本函数中访问。使得文件作用域变量在程序运行期间一直存在。使得函数作用域变量在每次进入函数时创建,离
static在c语言中的作用
2024-05-02

C# const和static readonly区别是什么

这篇文章主要介绍“C# const和static readonly区别是什么”,在日常操作中,相信很多人在C# const和static readonly区别是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答
2023-06-17

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录