在C++中为数组指定指针

Bou*_*rne 5 c++

我想在下面做这样的事情:

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]'的类型不兼容).我可以做些什么来使上面的代码工作?

cdm*_*dmh 5

如果您使用的是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


Yu *_*Hao 0

因为数组名称是不可修改的。所以你不能这样做

a = d;
Run Code Online (Sandbox Code Playgroud)

将其声明为指针,如下所示:

int *a;
Run Code Online (Sandbox Code Playgroud)