在下面的代码中,我遇到了一个变异数组的问题。我的问题是为什么funOne函数不会改变我传入的数组?
#include <iostream>
void funOne(char *arr, char x, char y, int z);
void print(char *array);
void print(char *array){
std::cout << array << std::endl;
}
void funOne(char *arr, char x, char y, int z){
z = sizeof(arr);
for(int i = 0; i<z; i++){
if(arr[i] == x){
x == y;
}
}
}
int main(){
char arra[] = {'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b', 'a', 'b'};
funOne(arra, 'a', 'c', 10);
print(arra);
system("pause");
return 0;
}
答案 0 :(得分:3)
x == y;
糟糕...?
==
运算符用于比较事物; =
运算符用于分配内容。此外,我想你想分配给arr[i]
,而不是x
:
arr[i] = y;
要多加小心。
您的最后一个问题是z
会出错,因为arr
不是您的数组,而是指向数组的指针......并且sizeof(char*)
已修复。您必须将数组的长度作为另一个参数传递给函数。
或者,你知道,使用std::vector
看到这是21世纪!!