【发布时间】:2020-02-21 04:13:37
【问题描述】:
我正在尝试编写一个函数,该函数将随机化数组中元素的顺序并将这些元素平方。我设法用两个参数编写它,但是我想只使用一个参数来编写它,但由于某种原因,我总是得到奇怪的值作为解决方案。有时它们是正确的,有时它们不是。这是我的函数的代码:
int *randomizedField(int field[]){
int temp = 0;
int random = 0;
int i = 0;
int j = 0;
while(field[i] != '\0'){
field[i] = field[i] * field[i];
i++;
}
while(field[j] != '\0'){
random = rand() % i;
temp = field[j];
field[j] = field[random];
field[random] = temp;
j++;
}
return field;
}
【问题讨论】:
-
为什么
int数组中的元素等于以空字符结尾的字符串字符?您可以使用 STL 算法完成所有这些操作,请参阅std::transform和std::shuffle。 -
这个功能怎么样?请给minimal reproducible example 重现您的问题。
-
如何在没有第二个参数的情况下获取数组的长度?我尝试使用 sizeof(arr) / sizeof(int) 但它给了我一个警告。
-
@Jamess11 获取函数的原始数组参数的长度是不可能的,因为传递的实际上只是一个指针。函数参数中的
int field[]与int* field完全相同。这就是为什么你应该使用std::array或std::vector而不是原始数组。
标签: c++ arrays function sorting