C++ 将数组指针作为函数参数传递

标签 c++ arrays function pointers

我正在尝试使用数组指针作为生成数组的函数的参数。

void generateArray(int *a[],  int *si){
  srand(time(0));
  for (int j=0;j<*si;j++)
       *a[j]=(0+rand()%9);
} //end generateArray;

int main() {
  const int size=5;
  int a[size];

  generateArray(&a, &size);

  return 0;
} //end main

但是当我编译这个消息时出现:

cannot convert `int (*)[5]' to `int**' for argument `1' to `void generateArray(int**, int*)'

最佳答案

您过于复杂了 - 它只需要:

void generateArray(int *a, int si)
{
    for (int j = 0; j < si; j++)
        a[j] = rand() % 9;
}

int main()
{
    const int size=5;
    int a[size];

    generateArray(a, size);

    return 0;
}

当您将数组作为参数传递给函数时,它会衰减为指向数组第一个元素的指针。所以通常不需要将指针传递给数组。

关于C++ 将数组指针作为函数参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11829830/

相关文章:

c++ - ALSA 捕获丢失的帧

c++ - 在 C++ 中获取指向数组的指针的拷贝

无法理解函数输出 (C)

javascript - 当变量等于函数时,这意味着什么?

php - 如何在 PHP 外部文件中调用过滤器钩子(Hook)

c++ - 跳过回溯中最内层的帧

c++ - 如何画线(斜线)?

c++ - 单个进程如何处理链接到同一库的多个共享库?

Java - 文本字段数组不显示

java - 如果我初始化一个对象数组并且不设置任何值,那么默认值是多少?