第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型でよいことになります。
尚、表示は変更する前もコンソール画面にアウトプットして前後が比較できるようにしましょう。
解答は例によって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入門講義(基礎から応用まで)