首页 > 编程语言 >C++ static

C++ static

时间:2024-03-19 19:35:17浏览次数:24  
标签:静态数据 存储 变量 C++ static 全局变量 函数

1. 隐藏(static函数,static变量均可)

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

如果加了static,就会对其它源文件隐藏。利用这一特性可以在不同的文件中定义同名函数和同名变量,而不必担心命名冲突。static可以用作函数和变量的前缀,对于函数来讲,static的作用仅限于隐藏。

2. 保持变量内容的持久

存储在静态数据区的变量会在程序刚开始运行时就完成初始化,也是唯一的一次初始化。共有两种变量存储在静态存储区:全局变量和static变量,只不过和全局变量比起来,static可以控制变量的可见范围,说到底static还是用来隐藏的。虽然这种用法不常见

PS:如果作为static局部变量在函数内定义,它的生存期为整个源程序,但是其作用域仍与自动变量相同,只能在定义该变量的函数内使用该变量。退出该函数后, 尽管该变量还继续存在,但不能使用它。

基于以上两点可以得出一个结论:把局部变量改变为静态变量后是改变了它的存储方式即改变了它的生存期。把全局变量改变为静态变量后是改变了它的作用域, 限制了它的使用范围。因此static 这个说明符在不同的地方所起的作用是不同的。

3. static的第三个作用是默认初始化为0

其实全局变量也具备这一属性,因为全局变量也存储在静态数据区。在静态数据区,内存中所有的字节默认值都是0x00,某些时候这一特点可以减少程序员的工作量。

标签:静态数据,存储,变量,C++,static,全局变量,函数
From: https://www.cnblogs.com/love-9/p/18083758

相关文章

  • Java中static
    一、被static修饰的成员变量叫做静态变量特点:被该类所有对象共享,不属于对象,属于类,随着类的加载而加载,优先于对象存在调用方式:1.类名调用   2.对象名调用二、被static修饰的成员方法,叫做静态方法特点:多用在测试类和工具类中,JavaBean类中很少会用调用方式:1.类名调用 ......
  • C++高级面试题:解释 C++ 中的函数对象适配器
    解释C++中的函数对象适配器函数对象适配器是C++中的一种编程技术,用于修改或增强现有的函数对象的行为。它们通常通过组合或包装现有的函数对象来实现所需的功能。函数对象适配器允许我们在不修改原始函数对象的情况下,对其进行修改或扩展。这样可以实现代码的重用和可......
  • C++ static和const
    const定义的常量在超出其作用域之后其空间会被释放;static定义的静态常量在函数执行后不会释放其存储空间;1.staticstatic表示的是静态的。类的静态成员函数、静态成员变量是和类相关的,而不是和类的具体对象相关的。即使没有具体对象,也能调用类的静态成员函数和成员......
  • const,static深度总结——c++穿透式分析
         前言;c++类和对象的知识点中除了几种默认函数,比较重要的还有使用const和static修饰成员相关知识点。const在c++中特性很简单。但是在使用中,比较容易疏忽大意出现问题。static特性也很简单,但是比起const来要直接的多。在使用中只要熟练语法以及底层原理。就......
  • C++ memcpy、memmove
    函数原型:void*memcpy(void*dest,constvoid*src,size_tcount);void*memmove(void*dest,constvoid*src,size_tcount);memcpy和memmove相同点:都是用于从src拷贝count个字节到destmemcpy和memmove区别:如果目标区域和源区域有重叠的话:memcpy不能够确保源......
  • c++学习记录 STL—常用查找算法
    一、算法简介find               //查找元素find_if             //按条件查找元素adjacent_find       //查找相邻重复元素binary_search      //二分查找法count        ......
  • C++ kmalloc、kzalloc、vmalloc的区别
    1.kmalloc函数原型:void*kmalloc(size_tsize,gfp_tflags);kmalloc()申请的内存位于物理内存映射区域,而且在物理上也是连续的,它们与真实的物理地址只有一个固定的偏移,因为存在较简单的转换关系,所以对申请的内存大小有限制,不能超过128KB。较常用的flags(分配内存的方法):G......
  • 高质量C/C++编程指南
    目录        1、概述    本文档参考《高质量C++C编程指南》及自己的心得编写,如有侵权,立刻删除!2、编程指南2.1文章结构    每个C++/C程序通常分为两个文件。一个文件用于保存程序的声明,我们称之为头文件。另一个文件用于保存程序的实现,我们称......
  • c++线程池(二)——线程池优化
    文章目录概要整体架构流程技术细节小结概要增加扇入扇出:优化:子线程维护自己的本地队列分析:目前文章《线程池一》介绍了一个简单的线程池,存在多个线程同时访问一个任务队列Task,出现抢锁的情况,这样会存在一定的性能消耗,会导致有些没抢到任务的线程没事做,造成资源浪......
  • 06_C++多维数组
    多维数组,数组指针在二维数组上的应用。#include<iostream>#include<stdio.h>usingnamespacestd;intmain(){intarr[3][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}};int(*p)[5]=arr;cout<<"*p:"<<*p<<endl......