第10講 ポインタのポインタの学習  
第7話 ポインタのポインタの要素数
最初に問題です。
int **a,i;
a=(int **)malloc(24);
for(i=0;i<6;i++)a[i]=(int *)malloc(20);
と宣言および初期化をすると、どのような配列を用意したのと同じになりますか。
答えは、30行下。

















答え
int a[5][4];
つまり、5行4列の配列を用意したのと同じになります。
このことを新規プロジェクトで次のコードを組んで確かめてみましょう。
#include<iostream>
using namespace std;
void f();
int main(){
   f();
}
void f(){
   cout<<"実験"<<endl;
   int **a,i;
   a=(int **)malloc(24);
   for(i=0;i<6;i++)a[i]=(int *)malloc(16);
   int j;
   for(i=0;i<6;i++){
     for(j=0;j<5;j++){
       a[i][j]=5*i+j+1;
     }
   }
   for(i=0;i<6;i++){
     for(j=0;j<5;j++){
       if(a[i][j]<10)cout<<" "<<a[i][j]<<" ";
       if(a[i][j]>=10)cout<<a[i][j]<<" ";
     }
     cout<<endl;
   }
}
コンソール画面
入門
確かに、6行5列の2次元配列と同様に扱えることがわかります。
int **a,i;
a=(int **)malloc(24);
for(i=0;i<6;i++)a[i]=(int *)malloc(20);
でもどうして、これで6行5列の2次元配列と同様になるのでしょうか。

第6話へ 第8話へ


戻る


VB講義へ
VB講義基礎へ

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