我正在尝试使用数组指针作为生成数组的函数的参数。
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/