首页 > 其他分享 >static关键字的作用

static关键字的作用

时间:2024-07-28 12:55:22浏览次数:5  
标签:函数 int 成员 局部变量 关键字 static 静态 作用

static关键字

力扣——两数之和

int* twoSum(int* nums, int numsSize, int target, int* returnSize)
{
    static int num[2] = {0};//因为要返回,所以使用静态局部变量
    for(int i=0;i<numsSize;i++)
    {
        for(int j=i+1;j<numsSize-1;j++)
        {
            if( (nums[i] + nums[j]) == target )
            {
                num[0] = i;
                num[1] = j;
                *returnSize = 2;
                return num;
            }
        }
    }
    return NULL;
}

1、修饰局部变量

  • 普通局部变量保存在栈中,使用完毕后会立即释放
  • 静态局部变量保存在数据区,即使函数返回,值也不会变,与全局变量类似但有利于程序模块化
#include <stdio.h>
#include <string.h>


void func()
{
    static int count = 0;
    count++;
    printf("%d\n", count);
}



int main (int argc, char **argv)
{
        int i = 0;

        for(i;i<3;i++)
        {
                func();
        }

        return 0;
}
li@raspberrypi3:~/test $ ./a.out
1
2
3

2、修饰全局变量

  • 普通全局变量对整个工程可见,其他文件使用extern后可直接使用
  • 静态局部变量仅对当前文件可见,其他文件可以使用这个变量名

3、修饰函数

  • 只能在声明它的文件中可见。对于静态函数,声明和定义需要放在同一个文件夹中。

4、修饰成员变量

  • static成员变量属于类本身,而不是类的某个特定对象。所有类的对象共享同一个静态成员变量。
  • static成员变量必须在类外进行定义和初始化,即使在类内部已经声明。

5、修饰成员函数

  • static成员函数属于类本身,而不是类的对象。只能访问静态成员变量和其他静态成员函数,不能访问非静态成员变量和函数。
  • 可以通过类名直接调用静态成员函数,也可以通过对象调用。
#include<iostream>

using namespace std;

class MyClass {
public:
    // 声明静态成员变量
    static int staticMember;

    // 静态成员函数
    static void displayStaticMember() {
        cout << "Static Member: " << staticMember << endl;
    }
};

// 定义和初始化静态成员变量
int MyClass::staticMember = 10;

int main() 
{
    // 通过类名访问静态成员函数
    MyClass::displayStaticMember();

    // 修改静态成员变量
    MyClass::staticMember = 20;

    
    MyClass::displayStaticMember();

    // 创建多个对象并访问静态成员变量
    MyClass obj1, obj2;

    // 静态成员变量共享,修改任何一个对象的值,所有对象看到的都是最新值
    obj1.staticMember = 30;
    cout << "Static Member obj2: " << obj2.staticMember << endl;

    return 0;
}
Static Member: 10
Static Member: 20
Static Member obj2: 30

标签:函数,int,成员,局部变量,关键字,static,静态,作用
From: https://www.cnblogs.com/LiBlog--/p/18328108

相关文章

  • dataclass_transform() 得到了意外的关键字参数“field_specifiers”
    我正在尝试使用这个G2P包但我收到dataclass_transform()gotanunexpectedkeywordargument'field_specifiers'这个错误。我正在尝试运行他们在我的jupyter笔记本中运行后提供的示例代码。下面附有我收到错误的示例代码。有人可以帮我解决这个问题吗?......
  • OpenCV aruco 标记检测不起作用
    我想在OpenCV中检测图像中的aruco标记。我的OpenCV版本是4.8.0。看起来它已被其他一些功能取代,我找不到任何指南。感谢您的帮助!#programtodetectarucomarkerswithopencv24.8.0versionimportcv2importnumpyasnp#dictionaryofarucomarkersaruco_dict=......
  • Spotify 将项目添加到播放列表不起作用
    我最近遇到了一个问题,我有一个用户已登录的帐户的播放列表。当我尝试使用API调用将曲目添加到播放列表时。我收到201响应代码和快照ID,表明请求成功。但是,当我检查实际播放列表时,播放列表每次都是空的,添加的歌曲不存在。此外,我有一种方法可以验证歌曲是否在播放......
  • 每日一知识点 - Java常用关键字
    目录......
  • c++ typedef 关键字详解
    在C++中,typedef关键字用于为已有的数据类型创建一个新的别名。这使得代码更加易读和维护,尤其是当使用复杂的类型定义时。typedef可以用来简化代码或使其更具描述性。基本语法typedefexisting_typenew_name;这里,existing_type是已有的类型,new_name是你为它创建......
  • 数据库中常见的几种索引类型及其作用
    在数据库中,索引是一种用于提高查询效率的数据结构。不同类型的索引有不同的用途和特性。以下是MySQL数据库中常见的几种索引类型及其作用:NORMAL(普通索引):这是最基本的索引类型,没有特定的约束条件。可以包含重复的值和NULL值。通常用于加速查询操作,但不会对数据的完整性......
  • 数据集规模、复杂性与结果变化性在微调与指令调整中的交互作用
     人工智能咨询培训老师叶梓转载标明出处在自然语言处理(NLP)的诸多任务中,标注数据的稀缺往往限制了模型性能的进一步提升。随着大型语言模型(LLMs)的兴起,研究者们现在面临一个关键问题:在有限的标注数据条件下,是应该依赖于通用的大型模型,还是应该通过微调来定制更为专业的小型模......
  • 变量与作用域
    intglobal=100;//外部链接,所有文件皆可访问。staticintone_file=50;//内部链接,static关键字,单文件可以使用voidfunction2(){staticintcount=0;//无连接,函数内部使用。静态变量。}//上述三种变量作用时间是程序执行开始到结束。所有静态变量不初始化都会被设定为02......
  • C++ typeid 关键字的注意事项
    typeid 是C++的一个关键字,用于动态类型获取。typeid 运算符与RTTI(运行时类型信息)密切相关,它返回一个指向 std::type_info 对象的引用,该对象表示了表达式的类型。使用 typeid 时,需要注意以下几个方面:需要#include <typeinfo>头文件:要使用 typeid,应在代码中包含 <t......
  • text_auto 参数在 Plotly 中不起作用
    尽管语法看似正确,但PlotlyExpress条形图的text_auto参数对我不起作用。我同时使用JupyterNotebook和Eclipse,问题仍然存在。Plotly版本5.19。我正在尝试使用PlotyExpress创建条形图。我想显示一家理论上的披萨店今年的最高订单。以下是我正在尝试的:(http......