现在的位置: 首页 > 综合 > 正文

在c++中利用指针实现动态数组

2012年02月08日 ⁄ 综合 ⁄ 共 1123字 ⁄ 字号 评论关闭

介绍:
        在c++中不能像java定义这样的数组 int[] arr = new int[],

         如果要根据程序的运行来实现动态数组在c++中可利用指针。

动态一维数组:
#include<iostream>
using namespace std;
int main()
{
     int len;
     cin>>len;
     int *p=new int[len];
     delete[] p;
     p = NULL;
     return 0;
}
动态二维数组:
int main()
{
     int row, col;
     cout << "Please enter the number for row and column: " << endl;
     cin >> row >>col;

     //为二维数组开辟空间
     int **p = new int*[row];
     for (int i = 0;  i < row;  i++)
    {
          p[i] = new int[col];
    }

     for (int j = 0;j < row; j++)
     {
          for (int k = 0; k < col; k++)
          {
               p[j][k] = (j + 1) * (k + 1);
               cout << p[j][k] << &p[j][k];
          }
          cout<<endl;
     }

     //释放二维数组占用的空间
     for (int m = 0; m < row; m++)
    {
          delete[] p[m];
    }
    delete[] p;
    p = NULL;
    return 0;
}
当然要利用指针可以实现多维数组,但是用利用STL中的vector应该更简单。
 

 

补充C和C++风格对比:

 

//这是C风格的
#include "malloc.h"   //使用malloc函数一定要嵌入这个头文件
      
int intt=10;
int inty=5;
 
int** array=(int**)malloc(sizeof(int*)*intt);
for(int i=0;i<intt;i++)
array[i]=(int *)malloc(sizeof(int)*inty);
 
 
//这是C++风格的
int intt=10;
int inty=5;
 
int** array=new int*[intt];
for(int j=0;j<intt;j++)
       array[j]=new int[inty];

抱歉!评论已关闭.