美文网首页
C++初始化相关问题

C++初始化相关问题

作者: authetic_x | 来源:发表于2019-06-07 19:30 被阅读0次

C++有一个特性,就是C++的内置类型无法在局部区域内默认初始化

int m;
int main() {
    int n;
    cout << m; // 0
    cout << n // 编译器报错
}

那么为什么不能像Go语言一样初始化呢?

我们来看一下C++的变量区,一共有四个:

  • 栈区,由编译器分配和释放,主要存放局部变量和函数参数
  • 堆区,由程序员分配和释放,动态分配的内存就在这个区域
  • 静态区,用于存放静态变量和全局变量
  • 常量区,用于存放常量,即const关键字定义

好吧其实我还是不清楚为什么不能初始化存放在栈区的局部变量,据说是性能问题,反正就是不能

我们再来看一下初始化数组的几种方法

int main() {
    int a[10] = {1};
    // 对不起,C++规定数组初始化列表中的元素个数小于指定的数组长度时,不足的元素补以默认值
    // 所以a数组会变为[1,0,0,0...]
    
    char b[10];
    memset(b, 'b', sizeof(b));
    // memset函数按照字节填充,所以一般只用来初始化char数组
    // memset定义在<cstring>里
    s
    int c[10];
    vector<int> v{0,1,2,3,4,5,6,7,8,9};
    fill(c, c+10, 1);
    fill(v.begin(), v.end(), 100);
    // fill赋值指定区间内的元素
    // fill定义在<algorithm>里
    
    // C++11可以省略赋值号
    bool flag[10]{};
    // 相当于flag[10]{false}
}

相关文章

  • C++初始化相关问题

    C++有一个特性,就是C++的内置类型无法在局部区域内默认初始化 那么为什么不能像Go语言一样初始化呢? 我们来看...

  • C++相关问题

    1.用C++写个程序,如何判断一个操作系统是16位还是32位的?不能用sizeof()函数? 2.不用循环实现1+...

  • Item 5 Prefer auto to explicit t

    引子 C++中一些与类型声明相关的几个问题: 显示声明了一个变量,但是没有初始化,变量是一个不确定的值; 模板中对...

  • C++变量声明与定义

    一、变量的初始化方式 1、C、C++通用初始化方法 1、常用的初始化语法,沿用于C语言 2、C++特有的变量初始化...

  • c++ python java

    c++ 初始化 C++类中成员变量的初始化有两种方式 - yu132563的专栏 - CSDN博客 C++ 变量初...

  • C++ 多态相关问题

    1.new和molloc()的区别来自于https://www.cnblogs.com/ywliao/articl...

  • C++拷贝构造函数总结

    C++的两种初始化方式 在阐述拷贝构造函数之前,先让我们来看一下C++支持的初始化方式。C++支持两种初始化方式。...

  • C++入坑记(3)

    变量初始化问题 当局部变量被定义时,系统不会自动对其初始化;当全局变量被定义时,系统会初始化为下列值: C++储存...

  • C++初始化列表

    引言 用c++的人都知道,c++的构造函数具有初始化列表,初始化列表有什么作用?什么情况下必须使用初始化列表...

  • c++数组初始化问题

    1、数组的长度是常量 int aa[20] = {}; bool bb[30] = {}; 2、数组的长度是变量 ...

网友评论

      本文标题:C++初始化相关问题

      本文链接:https://www.haomeiwen.com/subject/brsvxctx.html