如何将作为参数发送的数组中的所有元素= 0?
int myArrayFunction(int p_myArray[]) {
p_myArray[] = {0};//compiler error syntax error: ']'
.
.
}
答案 0 :(得分:9)
不,你不能。没有足够的信息。你也需要传递数组的长度。
int myArrayFunction(int p_myArray[], int arrayLength) {
// --------------------------------------^ !!!
然后您可以使用memset
或std::fill
将数组填充为零。 (= {0}
仅适用于初始化。)
std::fill(p_myArray, p_myArray+arrayLength, 0);
或者,切换为使用std::vector
,然后您无需跟踪长度。
int myArrayFunction(std::vector<int>& p_myArray) {
std::fill(p_myArray.begin(), p_myArray.end(), 0);
答案 1 :(得分:1)
使用std::fill_n()
。你需要传递元素的数量。
答案 2 :(得分:0)
循环播放。这意味着您还需要将该数组的大小赋予该函数。
答案 3 :(得分:0)
int myArrayFunction(int p_myArray[], int size)
{
for(int i=0; i<size; i++)
{
p_myArray[i] = 0;
}
.
.
}
答案 4 :(得分:0)
使用std::fill
。您需要以某种方式将数组的大小传递给函数。下面是使用模板大小方法的示例,但您应该考虑传递常规大小参数。
template<size_t size>
int myArrayFunction(int (&p_myArray)[size]) {
std::fill(p_myArray, p_myArray + size, 0);
}
答案 5 :(得分:0)
这种分配仅适用于新数组的初始化,而不适用于修改现有数组。
当你得到一个int []时,你基本上有一个指向数组所在内存中某个区域的指针。一旦离开函数,指向其他东西(例如文字数组)将无效。
您可以做的最多是使用[]运算符或库函数更新单个单元格。例如,p_myArray [i] = 0(您可以在i循环中执行此操作,但您需要将大小传递给您的函数)。
答案 6 :(得分:0)
如果你的p_myArray []有一个终止字符,你可以循环直到找到char。 例如,如果它是一个字符串作为以null结尾的char数组,则在找到'\ 0'
时将停止int myArrayFunction(char p_myArray[])
{
for(int i=0;p_myArray[i]!='\0';i++)
p_myArray[i]=0;
//..
}
如果p_myArray的数字从0到100,则可以使用101来表示数组结束,依此类推..
所以分析p_myArray的使用和内容,如果它有一个永远不会被用作数据的值,你可以用它作为终止代码来标记结尾。