【发布时间】:2011-08-20 04:44:22
【问题描述】:
我在阅读std::array and std::vector 时遇到了这个问题。
【问题讨论】:
我在阅读std::array and std::vector 时遇到了这个问题。
【问题讨论】:
C 样式数组只是一个“裸”数组 - 即未包装在类中的数组,如下所示:
char[] array = {'a', 'b', 'c', '\0'};
如果您将其用作数组,则为指针:
Thing* t = new Thing[size];
t[someindex].dosomething();
而“C++ 样式数组”(非官方但流行的术语)正是您所提到的 - 像 std::vector(或 std::array)这样的包装类。这只是一个包装类(实际上是一个 C 风格的数组),它提供了方便的功能,如边界检查和大小信息。
【讨论】:
int arr[42];),但将 sizeof 应用于变量会得到数组大小,同时应用 @987654327 @ 参数给你一个指针的大小。通过将数组参数声明解释为指针声明并将大多数数组表达式转换为指针类型,该语言付出了很多努力,使其看起来像数组和指针是可互换的。这意味着您可以在大多数情况下将它们混为一谈——然后一些极端情况会咬你。