指針的簡單應用(二) 之指針與數組

/*
 *將指針變量作函數參數(形參)接收數組地址
 *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;
}













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