<分区>
以下两个在 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};
<分区>
以下两个在 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/