【发布时间】:2011-01-06 21:55:38
【问题描述】:
嘿,我有这个功能:
void vdCleanTheArray(int (*Gen_Clean)[25])
{
}
我想知道它接受什么样的数组并清除它。
对不起,我对c++有点了解,刚刚有人问我。
谢谢!
【问题讨论】:
-
我不知道这意味着什么 -> +1,我的第一个猜测是它是一个函数指针数组,但我不认为就是这样。它的有效c tho
嘿,我有这个功能:
void vdCleanTheArray(int (*Gen_Clean)[25])
{
}
我想知道它接受什么样的数组并清除它。
对不起,我对c++有点了解,刚刚有人问我。
谢谢!
【问题讨论】:
它接受一个声明为的数组
int array[25];
应该“通过指针”传递,即通过将& 运算符应用于数组
vdCleanTheArray(&array);
至于如何清理它...据我了解,应该清理它的是上面的函数,你应该写它,对吧?好吧,在函数内部,您可以使用取消引用运算符* 访问数组,如
(*Gen_Clean)[i]
您只需像清除任何其他数组一样“清除”它。取决于您所说的“清晰”是什么意思。用零填充?如果是这样,那么只需编写一个从 0 到 24(或 sizeof *Gen_Clean / sizeof **Gen_Clean)的循环,将每个元素设置为零。
【讨论】:
void vdCleanTheArray(int (*Gen_Clean)[25]) 可以描述为“一个函数,它获取一个指向 25 个整数的数组的指针并且什么都不返回。”
假设“清除”是指将所有值设置为 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]' 变成指向指针的指针,而不是指向数组的指针。
【讨论】: