zoukankan      html  css  js  c++  java
  • [C++程序设计]用数组名作函数参数

    1. 用数组元素作函数实参

     1 #include <iostream>
     2 using namespace std;
     3 
     4 int max_value(int x, int max)
     5 {
     6     return max > x ? max : x;
     7 }
     8 
     9 int main()
    10 {
    11     const int x = 3, y = 4;
    12     int a[x][y]={{34,62,34,101},{45,67,3,0},{11,45,97,100}};
    13     int max = a[0][0], i, j, ix, iy;
    14 
    15     for(i = 0; i < x; i ++)
    16     {
    17         for(j = 0; j < y; j++)
    18         {
    19             max = max_value(a[i][j],max);
    20             if(max == a[i][j])
    21             {
    22                 ix = i;
    23                 iy = j;
    24             }
    25         }
    26     }
    27      cout << "a[" << ix << "][" << iy << "]=" << max << endl;
    28 }

    2. 用数组名作函数参数

    关于用数组名作函数参数有两点要说明:

    (1) 如果函数实参是数组名,形参也应为数组名(或指针变量,关于指针见第5章),形参不能声明为普通变量(如int array;)。实参数组与形参数组类型应一致(现都为int型),如不一致,结果将出错。
    (2) 需要特别说明的是: 数组名代表数组首元素的地址,并不代表数组中的全部元素。因此用数组名作函数实参时,不是把实参数组的值传递给形参,而只是将实参数组首元素的地址传递给形参。形参可以是数组名,也可以是指针变量,它们用来接收实参传来的地址。如果形参是数组名,它代表的是形参数组首元素的地址。在调用函数时,将实参数组首元素的地址传递给形参数组名。这样,实参数组和形参数组就共占同一段内存单元

    声明形参数组并不意味着真正建立一个包含若干元素的数组,在调用函数时也不对它分配存储单元,只是用array[]这样的形式表示array是一维数组名,以接收实参传来的地址。因此array
    []中方括号内的数值并无实际作用,编译系统对一维数组方括号内的内容不予处理。形参一维数组的声明中可以写元素个数,也可以不写。

    C++实际上只把形参数组名作为一个指针变量来处理,用来接收从 实参传过来的地址

     1 #include <iostream>
     2 #include <iomanip>
     3 using namespace std;
     4 
     5 void select_sort(int a[],const int n)
     6 {
     7     int i, j, k;
     8     for(i = 0; i < n; i++)
     9     {
    10         for(j = i + 1; j < n; j++)
    11         {
    12             if(a[i] > a[j])
    13             {
    14                 k = a[j];
    15                 a[j] = a[i];
    16                 a[i] = k;
    17             }
    18         }
    19     }
    20 }
    21 
    22 int main()
    23 {
    24     const int n = 10;
    25     int a[n] = {2,45,67,13,8,5,1,200,50,23};
    26     int i;
    27 
    28     select_sort(a, n);    
    29     
    30     for(i = 0; i < n; i++)
    31     {
    32         cout << setw(5) << a[i];
    33     }
    34     cout <<  endl;
    35     return 0;
    36 }

    3. 用多维数组名作函数参数

    如果用二维数组名作为实参和形参,在对形参数组声明时,必须指定第二维(即列)的大小,且应与实 参的第二维的大小相同。第一维的大小可以指定,
    也可以不指定。如
    int array[3][10]; //形参数组的两个维都指定或
    int array[][10]; //第一维大小省略

  • 相关阅读:
    利用expect实现自动化操作
    svn项目权限控制
    linux jdk环境变量
    Google Authenticator加强ssh安全
    k8s之configmap配置中心
    .NET面试题目二
    .NET面试题目一
    经典.net面试题目(3)
    经典.net面试题目(2)
    经典.net面试题目(1)
  • 原文地址:https://www.cnblogs.com/galoishelley/p/3852881.html
Copyright © 2011-2022 走看看