配列の2つの伝達方式


配列転送:配列をパラメータとして関数、スコア転送、アドレス転送に渡します.このうち,値伝達の効率は低く,使用を推奨しない.両方の伝達方式はmain関数の配列の値を変更し,以下のコードのa[3]の結果はいずれも6である.注意配列の値伝達と関数値伝達の違いを区別します.
//         
#include
using namespace std;

//   
void fun1(int a[5]){
    a[3] = 6;
}

//    
void fun2(int *a){
    a[3] = 6;
}

//   
int main(){
    int a[5] = {1,2,3,4,5};
    fun1(a);//       1
    fun2(a);//        1
    fun1(&a[0]);//       2
    fun2(&a[0]);//        2
    cout<

また、fun 1(a)とfun 1(&a[0])、fun 2(a)とfun 2(&a[0])はいずれも等価であり、aは配列のヘッダアドレスを表し、&a[0]は配列の最初の要素のアドレスを表すため、a=&a[0].