在C++中传递数组
Passing arrays in C++
我对C++还很陌生,我想做的是将insert_sort函数的输出传递给主函数。这是我的代码
#include "include.h"
using namespace std;
int main()
{
int arr[10] = {12,9,32,1,0,5,13,7,4,2};
for (int i = 0; i < 10 ; ++i)
{
cout << insertion_sort(arr[i]) << endl;
}
return EXIT_SUCCESS;
}
int* insertion_sort(int* arr){
int key, temp =0;
for (int i = 0; i < 10; ++i)
{
key = i+1;
while(key >= 0){
if (arr[key] < arr[key -1])
{
temp = arr[key -1];
arr[key -1] = arr[key];
arr[key] = temp;
}
key--;
}
}
return arr;
}
我得到的是
candidate function not viable: no known conversion from 'int' to 'int *' for 1st argument; take the
address of the argument with &
int* insertion_sort(int* arr);
插入排序算法在这里并不重要。我只是不明白为什么数组指针没有传递给函数。
这里发生了很多事情:
arr[i]是一个整数(类型为int)。您应该传递类型为int*的arr。
insert_sort函数似乎正在修改输入数组,因此不需要返回值。
此外,您不应该调用插入排序10次。调用insert_sort,然后使用for循环打印排序后的数组。
没有太多变化:
#include <iostream>
using namespace std;
void insertion_sort(int* arr){
int key, temp =0;
for (int i = 0; i < 10; ++i)
{
key = i+1;
while(key >= 0){
if (arr[key] < arr[key -1])
{
temp = arr[key -1];
arr[key -1] = arr[key];
arr[key] = temp;
}
key--;
}
}
}
int main()
{
int arr[10] = {12,9,32,1,0,5,13,7,4,2};
insertion_sort(arr);
for (int i = 0; i < 10 ; i++)
{
cout << arr[i] << endl;
}
return 0;
}
我会坚持回答你的问题,让你自己解决剩下的问题。
您的函数签名是int*insert_sort(int*arr),这意味着它期望一个指向int的指针,并将返回一个指向int的指针。
但是,您正在传递它arr[i],它是一个int,而不是指向int的指针。
尝试&arr[i]。
编码快乐!:)
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '