当前位置: 首页 > 知识库问答 >
问题:

C++OpenGL-这里的static关键字有什么用?[副本]

袁法
2023-03-14

为什么我们不能决定让它不是静态的呢?它让我们做什么?

static int nLen = 0;
    if (nLen)
    {
        nLen--;
        if (rand() % 4 == 0)
        {
            float light = (float)rand()/(float)RAND_MAX;
            if (rand() % 2 == 0)
            {
                Program.SendUniform("lightEmissive.color", 0.0, 0.0, 0.0);
                Program.SendUniform("lightPoint.diffuse", 0.0, 0.0, 0.0);
            }
            else
            {
                Program.SendUniform("lightEmissive.color", 1.0 * light, 1.0 * light, 0.8 * light);
                Program.SendUniform("lightPoint.diffuse", 0.15 * light, 0.15 * light, 0.15 * light);
            }
        }
    }
    else
    {
        Program.SendUniform("lightEmissive.color", 1.0, 1.0, 0.8);
        Program.SendUniform("lightPoint.diffuse", 0.15, 0.15, 0.15);
        if (rand() % 300 == 0)
            nLen = rand() % 180;
    }

共有1个答案

邵旺
2023-03-14

statice用作函数中的限定符时,这意味着变量将保持分配状态,并在一次函数调用到下一次函数调用时保留其值。换句话说,它具有全球寿命。(仍然只在第一次调用函数时才初始化)。

statice被用作全局变量的限定符时,它意味着该变量保持在当前编译单元(源文件)的内部。不能使用extern type name从另一个编译单元按名称访问此变量(尽管可以通过指针访问它)。如果两个编译单元使用相同的静态全局变量,名称也不会冲突,程序将进行编译。

 类似资料:
  • 本文向大家介绍C# 中static关键字的作用?相关面试题,主要包含被问及C# 中static关键字的作用?时的应答技巧和注意事项,需要的朋友参考一下 对类有意义的字段和方法使用static关键字修饰,称为静态成员,通过类名加访问操作符“.”进行访问; 对类的实例有意义的字段和方法不加static关键字,称为非静态成员或实例成员。 注: 静态字段在内存中只有一个拷贝,非静态字段则是在每个实例对象中

  • 我理解这是指当前对象。所以,与其使用 为什么我不能使用 请参考下面的例子,并在最后看到最后两个评论。

  • 本文向大家介绍C关键字static、const、extern作用相关面试题,主要包含被问及C关键字static、const、extern作用时的应答技巧和注意事项,需要的朋友参考一下 static和const的作用在描述时主要从类内和类外两个方面去讲: static关键字的作用: (1)函数体内static变量的作用范围为该函数体,该变量的内存只被分配一次,因此其值在下次调用时仍维持上次的值; (

  • 具体来说,我正在尝试这个代码: 但它给出了错误 无法访问静态方法main中的非静态字段 所以我把的声明改为: 它起作用了。把这个关键字放在声明之前意味着什么?它到底会对这个对象做什么和/或限制什么?

  • 问题内容: 什么时候不宜在方法签名上使用Java中的static关键字?如果方法基于某些参数执行功能,并且不需要访问非静态字段,那么您是否不总是希望这些类型的方法都是静态的? 问题答案: 您 可能 不希望它为静态的一个原因是允许它在子类中被覆盖。换句话说,行为可能不取决于对象内的数据,而是取决于对象的确切类型。例如,您可能具有常规的集合类型,其属性将在始终可变的集合,始终不可变的集合中返回,并依赖