第7講 ポインタ
第5話 2次元配列に対応するポインタの宣言
配列とポインタが同じであるとしたら、
  int a[10][10];
はポインタではどのように宣言するのでしょうか。
  int i;
  int **a = (int **)malloc(sizeof(int *)*10);
  for(i = 0; i < 10; i++)*(a+i)=(int *)malloc(sizeof(int)*10);
がその答えです。

コードを次のように変更して下さい。
#include<stdio.h>
#include<stdlib.h> //malloc()が使えるようにインクルード
void f(); //関数f()のプロトタイプ宣言
void g(); //関数g()のプロトタイプ宣言
int main() {
  f(); //関数f()に仕事を命じている
  g(); //関数g()に仕事を命じている
  return(0);
}
void f() {
  int a[10][10], i,j; //配列と制御変数の定義
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++)a[i][j] = 10 * i + j + 1; //データ作成
  }
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      if(a[i][j]<10)printf(" %d ",a[i][j]); //データ表示
      if (a[i][j]>=10 && a[i][j]<100)printf(" %d ", a[i][j]); //データ表示
      if (a[i][j] >= 100)printf("%d ", a[i][j]); //データ表示
    }
    printf("\n"); //改行
  }
  printf("\n"); //改行
}
void g() {
  int **a = (int **)malloc(sizeof(int *) * 10), i,j; //配列と制御変数の定義
  for (i = 0; i < 10; i++)*(a+i) =(int *)malloc(sizeof(int)*10); //データ作成
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++)a[i][j] = 10 * i + j + 1; //データ作成
  }
  for (i = 0; i < 10; i++) {
    for (j = 0; j < 10; j++) {
      if (a[i][j]<10)printf(" %d ", a[i][j]); //データ表示
      if (a[i][j] >= 10 && a[i][j]<100)printf(" %d ", a[i][j]); //データ表示
      if (a[i][j] >= 100)printf("%d ", a[i][j]); //データ表示
    }
    printf("\n"); //改行
  }
  printf("\n"); //改行
}

実行結果は
001
となります。

  int **a = (int **)malloc(sizeof(int *)*10);
  for(i = 0; i < 10; i++)*(a+i)=(int *)malloc(sizeof(int)*10);

  int **a = (int **)malloc(sizeof(int *) * 10), i,j; //配列と制御変数の定義
  for (i = 0; i < 10; i++)a[i] =(int *)malloc(sizeof(int)*10); //データ作成
とも記述できます。

これを参考にして3次元配列
  int a[3][10][6];
に対応するポインタを考えてみて下さい。
答えは30行下。































答え
  int i,j,k;
  int ***a = (int ***)malloc(sizeof(int **) * 3);
  for (i = 0; i < 3; i++)a[i] = (int **)malloc(sizeof(int *) * 10);
  for (i = 0; i < 3; i++) {
    for (j = 0; j < 10; j++)a[i][j] = (int *)malloc(sizeof(int *) * 6);
  }
第6講第8話で作った成績一覧表プログラムをポインタによって書き換えてください。



第4話へ   第6話へ

002

初心者のための excel 2016 マクロ VBA 入門講義 基礎から応用まで
vc++ c言語 c++ 入門 初心者 基礎から応用まで
eclipse c++ 入門
魔方陣 数独で学ぶ VBA 入門

数独のシンプルな解き方・簡単な解法の研究
VB講義へ
VB講義基礎へ
初心者のための世界で一番わかりやすいVisual C++入門基礎講座
初心者のための世界で一番わかりやすいVisual Basic入門基礎講座
初心者のための世界で一番わかりやすいVBA入門講義(基礎から応用まで)
初心者のための VC++による C言語 C++ 入門 基礎から応用まで第1部
eclipse java 入門
java 入門 サイト 基礎から応用まで
本サイトトップへ