我想在下面做这样的事情:
int main() {
int a[10];
int *d = generateArrayOfSize(10) // This generates an array of size 10 on the heap
a = d;
print(a); // Prints the first 10 elements of array.
}
Run Code Online (Sandbox Code Playgroud)
但是上面的代码给出了编译错误(将'int*'赋值给'int [10]'的类型不兼容).我可以做些什么来使上面的代码工作?
如果您使用的是C++,那么使用C++数组而不是C风格的数组和指针.这是一个例子
#include <array>
#include <iostream>
template<size_t N>
std::array<int, N> generateArrayOfSize(void)
{
std::array<int, N> a;
for (int n=0; n<N; ++n)
a[n] = n;
return a;
}
template<size_t N>
void print(std::array<int, N> const &a)
{
for (auto num : a)
std::cout << num << " ";
}
int main() {
std::array<int, 10> a;
std::array<int, 10> d = generateArrayOfSize<10>();
a = d;
print(a); // Prints the first 10 elements of array.
}
Run Code Online (Sandbox Code Playgroud)
哪个输出 0 1 2 3 4 5 6 7 8 9
因为数组名称是不可修改的。所以你不能这样做
a = d;
Run Code Online (Sandbox Code Playgroud)
将其声明为指针,如下所示:
int *a;
Run Code Online (Sandbox Code Playgroud)