C++数组传递和返回
C++ Array passing and returning
#include <bits/stdc++.h>
using namespace std;
int* insertionSort(int* a);
int main()
{
int a[5];
for(int i=0;i<5;i++)
{
cin>>a[i];
}
int b[5];
*b = insertionSort(a);
for(int i=0;i<5;i++)
{
cout<<b[i]<<" ";
}
}
int* insertionSort(int* a)
{
for(int i=1;i<5;i++)
{
int key=a[i];
int j=i-1;
while(j>0 && a[j]>key)
{
a[j]=a[j+1];
j-=1;
}
a[j+1]=key;
}
return a;
}
所以这是我的插入排序代码。但是当我运行它时,它给了我错误
insertionSort.cpp: 在函数 'int main((' 中: insertionSort.cpp:15:21:错误:从"int*"到"int"的转换无效 [-fallowive] *b = insertionSort(a(;
我想知道函数中的传递和返回数组如何在C++中工作。我的代码中有什么错误?
PS :我的插入代码可能是错误的。我没有真正测试过它,所以请原谅我,由于此错误,我无法检查它。如果有人能详细解释一下,那将非常有帮助。
insertionSort
返回一个int
指针,并且您尝试通过取消引用指针(*b
(将其分配给int
。正确的语法是
b = insertionSort(a);
此外,b
应声明为int* b
附言,这可以编译,但仍然无法按预期工作,但这与您提出的问题完全不同。
#include <array>
#include <algorithm> // sort
#include <iostream>
constexpr size_t size {5};
std::array<int, size>* insertionSort(std::array<int, size>& a)
{
std::sort(a.begin(), a.end());
return &a;
}
int main()
{
std::array<int, size> a {1, 4, 3, 2, 5};
std::array<int, size>* b = insertionSort(a);
for(size_t i = 0; i < size; ++i)
std::cout << (*b)[i] << std::endl;
}
- 您应该尽可能使用标准库函数(此处为排序函数(
- 多亏了 C++11,我们知道有数组(而不是使用原始指针(
相关文章:
- 从 C++ 中的函数返回数组地址问题
- 如何在 c++ 函数中返回数组
- 如何从 c++ 中的函数返回数组
- 为什么 c++ 函数可以正确返回数组的大小?
- 解释通过从函数引用返回数组的语法
- (C++)我的函数不返回数组
- 如何按 C++ 中的值从函数返回数组
- 返回数组中值的指针地址
- 创建一个函数来转换数组元素的类型并返回数组的地址
- 使用数组类返回数组c++
- 如何使函数返回数组?用于制作在VB.NET中使用的DLL
- 从函数 BY VALUE 返回数组,返回结构时会发生什么?
- 调用和打印函数,在 C++ 中返回数组
- 如何使用递归函数返回数组中整数的索引?
- 从函数返回数组时是否需要删除
- 为什么从函数返回数组时需要将数组声明为静态数组.(C++)
- C++返回数组而不进行动态内存分配?
- 在函数 c++ 中返回数组时出现问题
- 如何从C 中的函数返回数组
- 如何使类函数返回数组,然后将其调用并存储在 main 中