C++里的数组作为参数怎么传递?

萧霖 2008-11-09 09:20:28
大家看如下一个冒泡排序,我写成一个函数,数组怎么传递呀? 我这样写有问题。
#include <conio.h>
#include <iostream.h>
#pragma hdrstop

//---------------------------------------------------------------------------

#pragma argsused
#define N 9 //定义数组元素个数
int maopao(int A[]);
int main(int argc, char* argv[])
{
int A[9] = {19,23,79,33,13,68,99,36,28};
maopao( A[] );
return 0;
}

int maopao(int A[])
{
int a[] = A[];
int i, j, temp;
cout << "排序前:";
for(i=0; i<N; i++)
cout << a[i] << " ";
for(i=0; i<N; i++)
{
for(j=i+1; j<N; j++)
{
if(a[i]>a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
cout << "\n排序后:";
for(i=0; i<N; i++)
cout << a[i] << " ";
getch();
return 0;
...全文
803 11 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
oceanwindcd 2012-03-14
  • 打赏
  • 举报
回复
怎么解决的 也不说一下...
jia_xiaoxin 2008-11-09
  • 打赏
  • 举报
回复
#include <conio.h>
#include <iostream>
using namespace std;
//#pragma hdrstop

//#pragma argsused
#define N 9 //定义数组元素个数
int maopao(int A[]);
int main(int argc, char* argv[])
{
int A[9] = {19,23,79,33,13,68,99,36,28};

maopao( A );


return 0;
}

//数组作为参数传递时,其实传递的就是指针。
int maopao(int A[])
{
int * a = A; //数组的首地址可以用指针来表示
int i, j, temp;
cout << "排序前:";
for(i=0; i<N; i++)
cout << a[i] << " ";
for(i=0; i<N; i++)
{
for(j=i+1; j<N; j++)
{
if(a[i]>a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}

cout << "\n排序后:";
for(i=0; i<N; i++)
cout << a[i] << " ";


getch();
return 0;
}
tienchiu 2008-11-09
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 xhs_lh04 的回复:]
maopao( A );


int maopao(int *A)
{
int i, j, temp;
cout < < "排序前:";
for(i=0; i <N; i++)
cout < < A[i] < < " ";
for(i=0; i <N; i++)
{
for(j=i+1; j <N; j++)
{
if(A[i]>A[j])
{
temp = a[j];
A[j] = A[i];
A[i] = temp;
}
}
}
cout < < "\n排序后:";
for(i=0; i <N; i++)
cout < < A[i] < < " ";
getch();
return 0;

[/Quote]

这个没问题吧?不挺好的吗?
太乙 2008-11-09
  • 打赏
  • 举报
回复
up
~~~~~~
alargel 2008-11-09
  • 打赏
  • 举报
回复
好像一样。不敢确定。
萧霖 2008-11-09
  • 打赏
  • 举报
回复
谢谢,已经搞定了。3楼的,谢谢。C++里的指针和C的一样吗?
lq651659889 2008-11-09
  • 打赏
  • 举报
回复
up
帅得不敢出门 2008-11-09
  • 打赏
  • 举报
回复
嗯 用指针就行了.
如果要传整个数组也是可以的,就是封装到struct中传但是效率有问题
elegant87 2008-11-09
  • 打赏
  • 举报
回复

#include <conio.h>
#include <iostream>
//#pragma hdrstop
using namespace std;

//---------------------------------------------------------------------------

#pragma argsused
#define N 9
//定义数组元素个数
void maopao(int A[]);
int main(int argc, char* argv[])
{
int A[9] = {19,23,79,33,13,68,99,36,28};
maopao(A);//调用的时候直接用数组名就可
getch();
return 0;
}

void maopao(int A[])
{
int *a;//此处用指针
a=A;//把数组的首地址赋给a,a就是一个数组了
int i, j, temp;
cout << "排序前:";
for(i=0; i<N; i++)
cout << a[i] << " ";
for(i=0; i<N; i++)
{
for(j=i+1; j<N; j++)
{
if(a[i]>a[j])
{
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
cout << "\n排序后:";
for(i=0; i<N; i++)
cout << a[i] << " ";

}
萧霖 2008-11-09
  • 打赏
  • 举报
回复
白杨大侠,这样没用吧? 只用个指针就OK了?
xhs_lh04 2008-11-09
  • 打赏
  • 举报
回复
maopao( A );


int maopao(int *A)
{
int i, j, temp;
cout << "排序前:";
for(i=0; i<N; i++)
cout << A[i] << " ";
for(i=0; i<N; i++)
{
for(j=i+1; j<N; j++)
{
if(A[i]>A[j])
{
temp = a[j];
A[j] = A[i];
A[i] = temp;
}
}
}
cout << "\n排序后:";
for(i=0; i<N; i++)
cout << A[i] << " ";
getch();
return 0;

65,186

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧