配列の2つの伝達方式
605 ワード
配列転送:配列をパラメータとして関数、スコア転送、アドレス転送に渡します.このうち,値伝達の効率は低く,使用を推奨しない.両方の伝達方式はmain関数の配列の値を変更し,以下のコードのa[3]の結果はいずれも6である.注意配列の値伝達と関数値伝達の違いを区別します.
また、fun 1(a)とfun 1(&a[0])、fun 2(a)とfun 2(&a[0])はいずれも等価であり、aは配列のヘッダアドレスを表し、&a[0]は配列の最初の要素のアドレスを表すため、a=&a[0].
//
#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].