让我脑壳晕的问题 大家帮帮忙~

kukuyouhuo 2008-04-10 04:42:26
#include <iostream>
using std::cout;
using std::endl;

#include <iomanip>
using std::setw;

void selectionSort( int * const, const int );
void swap( int * const, int * const );

int main()
{
const int arraySize = 10;
int a[ arraySize ] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };

cout << "Data items in original order\n";

for ( int i = 0; i < arraySize; i++ )
cout << setw( 4 ) << a[ i ];

selectionSort( a, arraySize ); // sort the array

cout << "\nData items in ascending order\n";

for ( int j = 0; j < arraySize; j++ )
cout << setw( 4 ) << a[ j ];

cout << endl;
return 0;
}


void selectionSort( int * const array, const int size )
{
int smallest;


for ( int i = 0; i < size - 1; i++ )
{
smallest = i;


for ( int index = i + 1; index < size; index++ )

if ( array[ index ] < array[ smallest ] )
smallest = index;

swap( &array[ i ], &array[ smallest ] );
}
}



void swap( int * const element1Ptr, int * const element2Ptr )
{
int hold = *element1Ptr;
*element1Ptr = *element2Ptr;
*element2Ptr = hold;
}




既然单个的数组元素是按值传递的 那上面的红色部分为什么不可以直接传递数组的值啊 而要传递地址
C++既然对函数间的信息是隐藏的 那为什么可以
int main()
{int a
display(a)}
void display(int b)
{ }
这里的a主调函数声明的 那又怎么可以传递 我是新手 脑壳晕 ~:)
...全文
108 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
zmzbs123 2008-04-10
  • 打赏
  • 举报
回复
3楼正解,而且传对象比较麻烦,实现起来也不一样,推荐还是传地址
qmm161 2008-04-10
  • 打赏
  • 举报
回复
基本功啊,看书
liymzd 2008-04-10
  • 打赏
  • 举报
回复
谭浩强 c语言程序设计 里面函数一节 专门讲参数传递 而且就是用swap函数各种形式解说的 楼主可以看看,说的很清楚
Supper_Jerry 2008-04-10
  • 打赏
  • 举报
回复
void swap( int * const, int * const );
参数声明是指针,所以需要传地址
csdn5211 2008-04-10
  • 打赏
  • 举报
回复
传值有什么用,实现不了交换的。跟是不是数组元素没有关系,传值只是复制一份实参到栈上,然后对复制之后的东西操作。
skyful123 2008-04-10
  • 打赏
  • 举报
回复
传地址的和传值是有区别的

传地址的好处是 行参可以修改实参。

传值 目的是只做某件事情。。不会影响传进去的值

64,651

社区成员

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

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