C ++将数组传递给方法问题

时间:2010-01-19 17:15:43

标签: c++ arrays methods

嘿,我有这个功能:

void vdCleanTheArray(int (*Gen_Clean)[25])
{

}

我想知道它接受什么类型的数组并清除它。

抱歉,我对c ++有一点了解,有人问过我。

谢谢!

2 个答案:

答案 0 :(得分:2)

它接受一个声明为

的数组
int array[25];

应该通过“指针”传递,即通过将&运算符应用于数组

vdCleanTheArray(&array);

关于如何清理它...据我所知,上面的功能应该清理它,你应该写它,对吧?好吧,在函数内部,您可以使用取消引用运算符*来访问数组,如

(*Gen_Clean)[i]

你只是“清除”它,因为你会清除任何其他数组。取决于你所说的“清楚”。用零填充?如果是这样,那么只需编写一个从0到24(或sizeof *Gen_Clean / sizeof **Gen_Clean)的循环,将每个元素设置为零。

答案 1 :(得分:1)

void vdCleanTheArray(int(* Gen_Clean)[25])可以被描述为'一个函数,它指向一个包含25个整数的数组并且什么都不返回。'

假设'clear'表示将所有值设置为0,您可以使用以下内容执行此操作:

for (int i = 0; i < 25; i++) {
  (*Gen_Clean)[i] = 0;
}

请注意,在C ++中,无法调整C样式数组的大小。如果需要可调整大小的数组,最好使用std :: vector,如果需要固定大小的数组,最好使用std :: array。

如果你是C ++的新手,你可能不应该是这样的函数。键入第一个参数的方式不是您经常(或应该)在C ++中看到的内容。

对于那些对'int(* Gen_Clean)[25]'语法感到疑惑的人,我认为它的类型是强制传递指针实际指向25个整数的数组,因为通常C ++会降低参数' int * Gen_Clean [25]'指向指向指针,而不是指向数组的指针。