第11講 配列・ポインタを関数に渡す  
第1話 配列を関数に渡すには?
第8講 関数の学習その2において、引数の学習をしました。
複数の引数を渡すことができました。
z=f(x,y);
では配列を渡すことはできるのでしょうか。
答えは、配列そのものは渡せませんが、配列のアドレスを引数にして、
実質渡すことができるです。
int a[10];
と宣言した配列のアドレスを渡すには、
関数側の引数はf(int *a)などとします。
例えば、新規にプロジェクトを作り次のようにコーティングしてみましょう。
#include<iostream>
using namespace std;
int f(int *a);
int main(){
   int a[10],b,i;
   for(i=0;i<10;i++)a[i]=i+1;
   b=f(a);
   cout<<"1から10までの和="<<b<<endl;
}
int f(int *a){
   int w,i;
   w=0;
   for(i=0;i<10;i++)w=w+a[i];
   return(w);
}
コンソール画面
入門
     
今の例は、配列に入っている数をすべて足してその和を返す関数ですが、
すべての配列に入っている数を2倍にする関数に変更して、
その結果をmainの方で表示するようにプログラムを変更してください。
関数の型は今回は、void型でよいことになります。
尚、表示は変更する前もコンソール画面にアウトプットして前後が比較できるようにしましょう。
C言語
解答は例によって30行下。




















解答例
#include<iostream>
using namespace std;
void f(int *a);
int main(){
   int a[10],i;
   for(i=0;i<10;i++)a[i]=i+1;
   cout<<"変換前 ";
   for(i=0;i<10;i++){
     if(a[i]<10)cout<<" "<<a[i]<<" ";
     if(a[i]>=10)cout<<a[i]<<" ";
   }
   cout<<endl;
   f(a);
   cout<<"変換後 ";
   for(i=0;i<10;i++){
     if(a[i]<10)cout<<" "<<a[i]<<" ";
     if(a[i]>=10)cout<<a[i]<<" ";
   }
   cout<<endl;
}
void f(int *a){
   int i;
   for(i=0;i<10;i++)a[i]=2*a[i];
}
では、配列をポインタに変更して同様なプログラムを組んでみましょう。


第10講第9話へ
 第2話へ

戻る

C言語講義第1部へ
VB講義へ
VB講義基礎へ

vc++講義へ第1部へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)