当我从函数名中删除星号*时,下面的代码给出了一个错误,这是一个传统的规则吗?
此函数在堆上分配内存并返回指向堆的初始位置的指针。
int *create_array (size_t size, int int_value = 0)
{
int *new_storage {nullptr};
new_storage = new int [size];
for (size_t i{0}; i < size; ++i)
*(new_storage + i) = int_value;
return new_storage;
}
发布于 2019-03-05 09:57:53
星号不在函数名前面,它在int
后面
返回类型是int *
,函数名称是create_array
。
如果你删除了*
那么返回类型现在int
,但该函数仍然试图返回一个int *
,因此错误。
如果你愿意的话,你也可以这样写它,*
旁边是int
:
int* create_array (size_t size, int int_value = 0)
https://stackoverflow.com/questions/-100006421
复制相似问题