第11講 ポインタの学習

第11話 3次元配列を送ったり返したりする
実行画面が
1 7 4 0
9 4 8 8
2 4 5 5
1 7 1 1
5 2 7 6

1 4 2 3
2 2 1 6
8 5 7 6
1 8 9 2
7 9 5 4

3 1 2 3
3 4 1 1
3 8 7 4
2 7 7 9
3 1 9 8


02 14 08 00
18 08 16 16
04 08 10 10
02 14 02 02
10 04 14 12

02 08 04 06
04 04 02 12
16 10 14 12
02 16 18 04
14 18 10 08

06 02 04 06
06 08 02 02
06 16 14 08
04 14 14 18
06 02 18 16

となるアプリ例
#include<stdio.h>
#include<stdlib.h>
int*** f(int ***x);
//送られてきた3次元配列x[3][5][4]にランダムデータを収納して、
//それを自分が作った3次元配列y[3][5][4]にコピーしてから自分が作った
//3次元配列y[3][5][4]の先頭アドレスを返す社員
void g(int ***x,int ***y);
//社長mainが送ってきた3次元配列x[3][5][4]と3次元配列y[3][5][4]
//について3次元配列y[3][5][4]の方はすべてのデータを2倍してから、
//3次元配列x[3][5][4]と3次元配列y[3][5][4]のデータを表示する社員
int main(){
  int i,j;
  int ***x=(int ***)malloc(sizeof(int **)*3);
  for(i=0;i<3;i++)x[i]=(int **)malloc(sizeof(int *)*5);
  for(i=0;i<3;i++)for(j=0;j<5;j++)x[i][j]=(int **)malloc(sizeof(int *)*4);
  int ***a; //fが返してくる3次元配列の先頭アドレスの受け皿
  a=f(x);
  g(x,a);
  return(0);
}
int*** f(int ***x){
  int i,j,k;
  int ***y=(int ***)malloc(sizeof(int **)*3);
  for(i=0;i<3;i++)y[i]=(int **)malloc(sizeof(int *)*5);
  for(i=0;i<3;i++)for(j=0;j<5;j++)y[i][j]=(int **)malloc(sizeof(int *)*4);
  for(i=0;i<3;i++){
    for(j=0;j<5;j++){
      for(k=0;k<4;k++){
        x[i][j][k]=rand()%10;
      }
    }
  }
  for(i=0;i<3;i++){
    for(j=0;j<5;j++){
      for(k=0;k<4;k++){
        y[i][j][k]=x[i][j][k];
      }
    }
  }
  return(y);
}
void g(int ***x,int ***y){
  int i,j,k;
  for(i=0;i<3;i++){
    for(j=0;j<5;j++){
      for(k=0;k<4;k++){
        y[i][j][k]=2*y[i][j][k];
      }
    }
  }
  for(i=0;i<3;i++){
    for(j=0;j<5;j++){
      for(k=0;k<4;k++){
        printf("%d ",x[i][j][k]);
      }
      printf("\n");
    }
    printf("\n");
  }
  printf("\n");
  for(i=0;i<3;i++){
    for(j=0;j<5;j++){
      for(k=0;k<4;k++){
        if(y[i][j][k]<10)printf("0%d ",y[i][j][k]);
        if(y[i][j][k]>=10)printf("%d ",y[i][j][k]);
      }
      printf("\n");
    }
    printf("\n");
  }
}
コピペ用添付ファイル

最後に関数ポインタを勉強しましょう。





第10話へ   第12話へ

第2部目次に戻る  第1部目次に戻る

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

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