相关疑难解决方法(0)

为什么全局变量和静态变量初始化为默认值?

在C/C++中,为什么全局变量和静态变量初始化为默认值?

为什么不留下垃圾值呢?这有什么特别的原因吗?

c c++ static global-variables

61
推荐指数
4
解决办法
3万
查看次数

为什么用户提供的默认构造函数会导致未初始化的成员?

请考虑以下代码:

#include <iostream>

struct A{ // with implicit default constructor
       int number;
};

struct B{
       int number;
       B(){}; // user-provided default constructor
};

int main()
{
    A aa = {};
    B bb = {};

    std::cout << "aa.number: " << aa.number << std::endl;
    std::cout << "bb.number: " << bb.number << std::endl;    
}
Run Code Online (Sandbox Code Playgroud)

在线运行代码会 产生以下输出:

aa.number: 0
bb.number: 19715
Run Code Online (Sandbox Code Playgroud)

为什么 bb.number 未初始化?我认为使用 ={} 可以保证零初始化?

c++

4
推荐指数
2
解决办法
148
查看次数

C静态变量和初始化

如果我在这段代码中有一个全局静态变量x

 #include <stdio.h>
 #include <stdio.h>

 static int x;

 int main(void)
 {

 DO SOMETHING WITH x HERE

 x++;

 }
Run Code Online (Sandbox Code Playgroud)

如果我选择将x初始化为一个值,那将会有所不同

static int x = 0;  
Run Code Online (Sandbox Code Playgroud)

在进入"主要"之前?

在我的第一种情况下,我没有为x赋值,编译器是否隐式知道x要设置为零,因为它是一个静态变量?我听说我们可以用静态变量做到这一点.

非常感谢...

c static initialization

3
推荐指数
2
解决办法
6627
查看次数

标签 统计

c ×2

c++ ×2

static ×2

global-variables ×1

initialization ×1