我无法将数组传递到我的函数中
i cant pass my array into my function
我正在做一个shell排序程序,但是将数组传递到我的函数中存在一些问题,我已经搜索了一些关于将数组传递到函数中的帖子,但我仍然不明白。
#include <iostream>
#include <cmath>
using namespace std;
int shellsort(int arr[]){
int gap = floor(sizeof(arr)/2);
for(int gap = floor(sizeof(arr)/2); gap < 0; gap=gap/2){
for(int i = gap; i < sizeof(arr); i++){
if(arr[i] < arr[i-gap]){
int temp = arr[i];
arr[i] = arr[i-gap];
arr[i-gap] = temp;
if(gap == 1){
if(arr[i-1] < arr[i-2]){
int temp = arr[i-1];
arr[i-1] = arr[i-2];
arr[i-2] = temp;
}
}
}
}
}
return arr;
}
int main(){
int numcount;
cin>>numcount;
int numbers[numcount];
for(int i; i<numcount; i++){
cin>>numbers[i];
}
int numbers = shellsort(numbers);
cout<<numbers;
}
当心你答应归还的东西和你归还的东西。
int shellsort(int arr[]){
//....
return arr;//<--- ****not an int****
}
现在,要么更改为使用向量:
std::vector<int> shellsort(std::vector<int> arr){
int gap = floor(arr.size()/2);
for(int gap = floor(arr.size()/2); gap < 0; gap=gap/2){
//as above
}
return arr;
}
或发送尺寸
int * shellsort(int * arr, size_t size){
int gap = floor(size/2);
for(int gap = floor(size/2); gap < 0; gap=gap/2){
//as above
}
return arr;
}
问题是在你的函数内部,int arr[]
的实际大小是未知的,arr
衰减到一个指针,因此sizeof(arr) == sizeof(int*)
。
我建议你重写代码以使用std::vector
:
#include <iostream>
#include <cmath>
#include <vector>
using namespace std;
std::vector<int> shellsort(std::vector<int> arr){
int gap = floor(arr.size()/2);
for(int gap = floor(arr.size()/2); gap < 0; gap=gap/2){
for(int i = gap; i < arr.size(); i++){
// ...as before...
}
}
return arr;
}
int main(){
int numcount;
cin>>numcount;
std::vector<int> numbers(numcount);
for(int i; i<numcount; i++){
cin>>numbers[i];
}
numbers = shellsort(numbers);
for (std::size_t i = 0u; i < numbers.size(); ++i)
cout<<numbers[i];
}
相关文章:
- 为什么在我的函数类型后使用引用运算符 (&) 允许我修改它返回的值?
- 在哪里放置我的函数?进入我的母语 Gui 还是进入我的演示者?
- 查找定义我的 C/C++ 函数/宏的文件比'grep'更简单的方法
- 为什么我的 constexpr 对象在我的函数中不是 constexpr?
- 为什么我的函数接受"std::string"进行排序不会改变它?
- 为什么 emscripten 不编译我的函数?
- binary_search() 函数在我的函数体中不起作用
- 如何将不同大小的数组传递给我的 C++ 函数?
- 如果我想使用 cout 为我的函数提供任何输入......我该如何给出
- (C++)我的函数不返回数组
- 如何让我的重载<<运算符打印出我的函数?
- 我的函数调用 (C++) 中的未声明标识符
- 钩/绕道 d3d9 (现在/结束场景) - 似乎调用我的函数然后崩溃
- 成员函数的"this"参数具有"const"类型,但我的函数实际上不是"const"
- 我应该声明我的函数模板专业化还是定义它们就足够了
- 为什么我的函数名称中会随机出现一个额外的字母
- 为什么我的函数无法使用指针打印多维数组的元素?
- 当我从头文件和实现文件调用我的函数到我的主文件时,我没有得到任何输出
- 钩子SSDT.其他驱动程序使用我的函数
- 如何修复我的函数 popFront 为我的列表?