标量类型(scalar types)初始化

    在C/C++中,以下的几种字符串指针初始化的方式都是合法的。

    char str1[10]="welcome";
    //char str2="welcome"; //error: invalid conversion from 'const char*' to 'char'
    char str3[10]={"welcome"};
    char *str4="welcome";
    char *str5={"welcome"};

    看起来,str3和str5貌似是会编译不过的,实则不然。

    在C++11标准中,提供了与C语言一致的初始化功能。对于标量类型(什么是标量类型)的初始化,大括号是可选的,即 int a=0;和 int a={0};是等价的。

    str5是指针类型,属性标量类型,因此其初始化是合法的。对于str3,是数组类型,不属于标量类型,不过编译器选择支持类似的初始化方式,或许是为了统一方便用法吧。


更多参考:

C++初始化与赋值

c++ 11 新特性

scalar types 初始化

本文出自 夜惊心的博客,转载请保留出处

你可能感兴趣的:(标量类型(scalar types)初始化)