gpt4 book ai didi

c++ - 在 C++ 错误中将数组作为参数传递

转载 作者:行者123 更新时间:2023-11-27 23:12:30 25 4
gpt4 key购买 nike

我试图对一个数组进行“选择排序”。但是,为了超越常规方式并实现我学到的东西,我决定将原始数组传递给一个名为“org_array”的函数,并尝试在“void”中调用它,而不是仅使用“for 循环”显示原始数组主要的()”。但是有几个错误。我无法弄清楚我在传递参数时犯了什么错误。请帮忙?

代码:

#include<iostream>
#include<conio.h>
using namespace std;
extern int s;
void org_array(int arr[30],int y);
void main()
{
int i,n,j,pos,a[30];
cout<<"Enter n: "<<endl;
cin>>n;
cout<<"\nEnter array: "<<endl;
for(i=0;i<n;i++){
cin>>a[i];
}
cout<<"Orginal Array: ";
org_array(a[30],n);
/*for(i=0;i<n;i++){
cout<<a[i]<<" | ";

}*/
for(i=0;i<n-1;i++)
{
int small=a[i];
pos=i;
for(j=i+1;j<n;j++)
{
if(a[j]<small)
{
small=a[j];
pos=j;
}
}
int temp=a[i];
a[i]=a[pos];
a[pos]=temp;

}
cout<<"\tSorted Array: ";
for(i=0;i<n;i++){
cout<<a[i]<<" | ";
}
getch();
}
void org_array(int arr[30],int y){
for(s=0;s<y;s++)
{
cout<<" "<<arr[s];
}
}

最佳答案

org_array(a[30],n);

不正确。应该是:

org_array(a,n);

main 应该按照 ISO 返回 int。进一步你的声明和定义分别应该是这样的:

void org_array(int [],int); // declaration - removed 30 since we might want to pass an array of larger size

void org_array(int arr[],int y) //definition
{
for(int s=0;s<y;s++) // You did not declare s as int
{
cout<<" "<<arr[s];
}
}

只是一个旁注:

一个左值 [see question 2.5]出现在表达式中的 T 数组类型衰减(除了三个异常(exception))为指向其第一个元素的指针;结果指针的类型是指向 T 的指针,因为数组不是“可修改的左值”,

(异常(exception)情况是数组是 sizeof 或 & 运算符的操作数,或者是字符数组的文字字符串初始值设定项。)

关于c++ - 在 C++ 错误中将数组作为参数传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19195519/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com