在错误C++将数组作为参数传递
Passing array as parameter in C++ ERROR
我试图"选择排序"一个数组。但是,为了超越正常方式并实现我学到的东西,我决定将原始数组传递给名为"org_array"的函数,并尝试在"void main()"中调用它。但是有几个错误。我无法弄清楚我在传递参数时犯了什么错误。请帮忙?
法典:
#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];
}
}
只是一个旁注:
出现在表达式中的 T 数组类型的左值 [参见问题 2.5] 衰减(有三个例外)为指向其第一个元素的指针;生成的指针的类型是指向 T 的指针,因为数组不是"可修改的左值"。
(例外情况是当数组是 sizeof or & 运算符的操作数,或者是字符数组的文本字符串初始值设定项时。
在你的代码中:
cout<<"Orginal Array: ";
org_array(a[30],n);
应该只传递数组的名称作为参数。数组作为对内存块地址的引用传递。您在调用中引用数组中的特定索引。http://www.cplusplus.com/doc/tutorial/arrays/
org_array(a,n);
在您的代码中:
void org_array(int arr[30],int y){
for(s=0;s<y;s++)
{
cout<<" "<<arr[s];
}
}
for 循环需要变量 s 的类型。我假设你想要一个整数。
for(int s=0; s<y; s++)
您的 main 函数也应该是 int 类型并返回 int 值。
相关文章:
- 在函数中使用 const int size 参数创建数组会在 Visual Studio 中抛出错误 C++:表达式的计
- 如何在模板函数中实例化其长度使用模板参数的数组
- 基于参数创建数组
- 我在解决此错误时遇到问题.我正在努力在主函数中传递数组
- 在 c++ 中使用模板传递数组时出现问题
- Pybind11 默认参数 numpy 数组或 None
- 传递数组结构、ofstream 和 interger 以运行
- 有没有办法根据命令行参数定义数组大小?运行时与编译时实例化?
- 在C++中传递数组作为函数参数的方法
- 函数参数绑定通过参考与传递指针传递数组的规则
- 如果数组变量在 c# 代码中定义为“ref”参数,则如何传递数组变量
- 你究竟如何通过函数的参数传递数组?
- c++ 传递数组而不是可变长度参数列表
- 如何在我的实际参数中通过引用传递数组
- 如何在函数C++中传递数组成员作为参数
- 在函数中传递数组作为引用参数
- 通过引用传递数组参数
- 在c++中传递数组作为函数参数
- 如何在构造函数中传递数组作为参数?c++
- 为什么编译器不在参数中传递数组字符 *arr[] 的大小?