指针的简单应用(二) 之指针与数组

/*
 *将指针变量作函数参数(形参)接收数组地址
 *C++编译系统将形参数组名一律当作指针变量来处理
 *比如:
 * void func(int array[],int n)
 * void func(int* array,int n)
 *上面两种方式是等价的;
 * 因为在调用函数的时,系统会建立一个指针变量array,用来
 *存放从主调函数传递过来的实参数组首元素的地址。
 * 实际上在函数调用时并不存在一个占有存储空间的形参数组,只有指针变量
 * 比如下面的例子:
 */

#include <iostream>
using namespace std;

void Select_Sort(int arr[],int n);
void SelectSort(int* arr,int n);
void Out_put(int arr[],int n);
void Output(int* arr,int n);

int main()
{
int array[7];
cout << "输入7个整数,为数组元素:";
for(int i = 0; i != 7; i++)
cin >> array[i];
//cout << sizeof(array) << endl;
Select_Sort(array,7);
Out_put(array,7);
cout << "----------------" << endl;
//SelectSort(array,7);
//Output(array,7);
return 0;
}
void Select_Sort(int arr[],int n)
{
//cout << sizeof(arr) << endl;
int j,Min;
for(int i = 0; i != n; i++)
{
Min = i;
for(j = i+1; j != n; j++)
{
if(arr[j] < arr[Min])
Min = j;
}
swap(arr[i],arr[Min]);
}
}
void SelectSort(int* arr,int n)
{
//cout << sizeof(arr) << endl;
/*int j , Min;
for(int i = 0; i != n; i++)
{
Min = i;
for(j = i+1; j != n; j++)
{
if(*(arr+j) < *(arr+i))
Min = j;
}
swap(*(arr+i),*(arr+Min));
}*/
int *q,*Min;
for(int* p = arr; p != arr+n; p++)
{
Min = p;
for(q = p+1; q != arr+n; q++)
{
if(*q < *Min)
Min = q;
}
swap(*p,*Min);
}
}

void Out_put(int arr[],int n)
{
for(int i = 0; i != n; i++)
cout << arr[i] << ' ';
cout << endl;
}
void Output(int* arr,int n)
{
for(int* p = arr; p != arr+n; p++)
cout << *p << ' ';
cout << endl;
}













發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章