c++ - 是 int a[10]={0,1,2,3,4,5,6,7,8,9};与 C++ 中的 int *a={0,1,2,3,4,5,6,7,8,9} 相同吗?

标签 c++ arrays

<分区>

以下两个在 C++ 中是否相同?

首先:

    int a[10] = {0,1,2,3,4,5,6,7,8,9};

和第二,

    int *a = {0,1,2,3,4,5,6,7,8,9};

最佳答案

第一个是整数数组,第二个是指向整数的指针。所以不,它们不一样。

数组可以用作指针(因为数组衰减为指向第一个元素的指针),指针可以用作数组,但对于编译器而言它们是不同的。

此外,数组的大小在编译时是固定的,它将是十个整数的大小,sizeof 将返回 40(对于 32 位 int 这是最常见的)。指针的大小是指针的大小,而不是它指向的内容。因此,对指针执行 sizeof 将返回 4(在 32 位机器上)或 8(在 64 位机器上)。

还有一个……C++ 没有“文字数组”,所以你不能像这样给指针赋值。您必须先分配内存,然后再分配。不过,使用新的 C++11 标准可以一步完成:

int* a = new int[10]{0, 1, 2, 3, 4, 5, 6, 7, 8, 9 };

请记住,如果您像上面那样分配内存,则还必须释放它:

delete[] a;

关于c++ - 是 int a[10]={0,1,2,3,4,5,6,7,8,9};与 C++ 中的 int *a={0,1,2,3,4,5,6,7,8,9} 相同吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16807642/

相关文章:

PHP : array_intersect not giving expected result

c - 使数组用户输入特定于冒泡排序?

c++ - C++ 中的多级函数模板

c++ - SFML 2.1 获取帧时间

c++ - 优化编译器如何决定何时以及展开多少循环?

c++如何检查数组中的-1.#IND

c++ - .c 与 .cc 与 .cpp 与 .hpp 与 .h 与 .cxx

python - 如何使从 netCDF (.nc) 加载的数组可写?

javascript - 如何从数组数组中创建一个新数组,仅选择具有所需索引的元素

javascript - 在 Javascript 中将对象作为参数传递 - 但不仅仅是一个参数,而是一个从变量构建的参数