Set*_*gie 12

C-Style数组只是一个"裸"数组 - 也就是说,一个没有包含在类中的数组,如下所示:

char[] array = {'a', 'b', 'c', '\0'};
Run Code Online (Sandbox Code Playgroud)

或者如果您将其用作数组,则为指针:

Thing* t = new Thing[size];
t[someindex].dosomething();
Run Code Online (Sandbox Code Playgroud)

而"C++风格数组"(非官方但流行的术语)就是你所提到的 - 像std::vector(或std::array)这样的包装类.这只是一个包装类(它实际上是一个C风格的数组),提供了边界检查和大小信息等便捷功能.

  • @Seth:例如,您可以拥有一个看似相同的声明的变量和参数(`int arr[42];`),但是将 `sizeof` 应用于变量可以得到数组大小,而将 `sizeof` 应用于变量参数给出了指针的大小。该语言付出了很多努力,通过将数组参数声明解释为指针声明并将大多数数组表达式转换为指针类型,使数组和指针“看起来”可以互换。这意味着“大多数时候”你可以将它们混为一谈——然后一些极端的情况就会困扰你。 (2认同)