首页 > 代码库 > [C++程序设计]用指针变量作函数参数接收数组地址

[C++程序设计]用指针变量作函数参数接收数组地址

 1 #include <iostream> 2 using namespace std; 3  4 void select_sort(int *p, int n) 5 { 6     int i, j, k; 7     for(i = 0; i < n - 1; i++) 8     { 9         for(j = i + 1; j < n; j++)10         {11             if(p[i] > p[j])12             {13                 k = p[i];14                 p[i] = p[j];15                 p[j] = k;16             }17         }18     }19 }20 21 void select_sort1(int *p, int n)22 {23     int i, j, k;24     for(i = 0; i < n - 1; i++)25     {26         for(j = i + 1; j < n; j++)27         {28             if(*(p + i) > *(p + j))29             {30                 k = *(p + i);31                 *(p + i) = *(p + j);32                 *(p + j) = k;33             }34         }35     }36 }37 38 void printf(int *p, int n)39 {40     for(int i = 0; i < n; i++)41         cout << *(p + i) << " ";42     cout << endl;43 }44 45 int main()46 {47     int n = 10;48     int a[] = {20, 4, 5, 22, 50, 23, 24, 29, 90, 1001};49     select_sort1(a, 10);50     printf(a, 10);51     return 0;52 }

C++编译系统将形参数组名一律作为指针变量来处理,实际上在函数调用时并不存在一个占有存储空间的形参数组,只有指针变量。

实参数组名a代表一个固定的地址,或者说是指针型常量,因此要 改变a的值是不可能的。如

a++; //语法错误,a是常量,不能改变

而形参数组名是指针变量,并不是一个固定的地址值。它的值是可以改变的。在函数调用开始时,它接收了实参数组首元素的地址,但在函数执行期间,它可以再被赋值。如

f(array[],int n)

{  cout<<array;

  array=array+3;

  cout<<*arr<<endl;

}