C ++传递一个数组指针作为函数参数 [英] C++ passing an array pointer as a function argument

查看:1198
本文介绍了C ++传递一个数组指针作为函数参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图使用数组指针的作为参数传递给使用它生成一个数组的函数。

 无效generateArray为(int * A [],INT * SI){
  函数srand(时间(0));
  对于(INT J = 0; J< * SI; J ++)
       *一个[J] =(0 +兰特()%9);
} //结束generateArray;诠释主(){
  const int的大小= 5;
  int类型的【规格】;  generateArray(&放大器;一,&安培;大小);  返回0;
} //主到底

但是,当我编译此出现此消息:

 不能转换`INT(*)[5]'为'INT **'的说法'1''无效generateArray(INT **,为int *)'


解决方案

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

 无效generateArray为(int *一,诠释SI)
{
    对于(INT J = 0; J< SI; J ++)
        一个研究[J] =兰特()%9;
}诠释的main()
{
    const int的大小= 5;
    int类型的【规格】;    generateArray(一个,大小);    返回0;
}

当你传递一个数组作为参数传递给它衰变到一个指向数组的第一个元素的功能。所以通常不用需要一个指针传递给数组。

I'm trying to use pointers of arrays to use as arguments for a function which generates an array.

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

But when I compile this this message appears:

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

解决方案

You're over-complicating it - it just needs to be:

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;
}

When you pass an array as a parameter to a function it decays to a pointer to the first element of the array. So there is normally never a need to pass a pointer to an array.

这篇关于C ++传递一个数组指针作为函数参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆