BONO's pageプログラム覚書

配列の動的配置 [2004年1月]

- 動的にメモリ領域を確保
  • 自由なタイミングでメモリを割り当てたりしたいときには,new演算子delete演算子を用いる.
  • int型のメモリを確保する場合
     int *q;
       q=new int;

       delete q;
  または
    int *q=new int;

       delete q;
  • double型のメモリを確保する場合
    double*q;
       q=new double;

       delete q;
  または
    double *q=new double;

       delete q;
- 配列を動的に確保する場合
  • int型のメモリを5つ確保する場合

#include        <stdio.h>
#include        <stdlib.h>
#include        <math.h>

void main()
{
int n, *p1, *p2; //int型メモリを5つ 動的に配置 p1= new int[5]; for(n=0;n<5;n++)    p1[n]=n;
delete p1; }
- N行N列の配列を動的に確保する場合
  • double型のメモリを1000 * 1000 個確保する場合
サンプルコード
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int main(int argc, char* argv[])
{
      const int N=1000;
      int i,j;
      double **A; //ポインタのポインタ

      //N行N列の配列を動的に配置
      A=(double**)new double[N];
      for(i=0;i<N;i++)
         A[i]=new double[N];

      //乱数の初期化
      srand(2002);

      //各配列要素を一様乱数で埋める
      for(i=0;i<N;i++)
      for(j=0;j<N;j++)
         A[i][j]=((double)rand()/RAND_MAX-0.5)*2.0;

      for(i=0;i<N;i++)
      for(j=0;j<N;j++)
         printf("%5.1f",A[i][j]);
      //メモリの開放
      for(i=0;i<N;i++)
         delete(A[i]);
      delete(A);

   return 0;
}

- 関連情報

[前画面に戻る]

Copyright(C)1998 Shinichi Takeshita.All Rights Reserved.