c ++

时间:2017-01-11 20:33:49

标签: c++

默认值是什么,未初始化变量时会分配变量? 在下面的代码中,我没有初始化变量 - count和j然而,我得到不同的值。不能为所有变量分配默认值零?无法理解。

#include<iostream>
#include<sstream>
using namespace std;

    int main()
    {
    char str[] ("Hello World!!!");
    char *p;
    int i;
    int count;
    int j;

    cout << "count is:" << count << endl;
    cout <<"Value of j is " << j <<endl;

    p=str;

    for (i=0;i<20;i++){
        cout << *p;
        p++;
    }

    cout << "Length of string is:" << count <<endl;

    }

O / P

计数是:4198400 j的值是:1 你好,世界!!! 字符串长度为:4198400

1 个答案:

答案 0 :(得分:1)

静态变量初始化为零,非静态变量未初始化,并且保留变量位置内存中的值。

变量初始化为零的原因是它带有成本,初始化变量需要花费,而且由于C ++(和C)是高性能语言,你不支付你不使用的东西,他们这样做不执行此初始化。

静态可以自由初始化,因此初始化为零。这是C ++中这样工作的原因之一,因为它在C中的工作原理如此,C ++被认为是C的下一个迭代,因此保留了许多相同的原则。

这实际上是在Scott Meyers的谈话开始时提到的:"The last thing D needs"

int x;            //  x = uninitialized
int x;            // <-- in global scope: x = 0
static int x;     //  x = 0
int* x = new int; // *x = uninitialized