在c++中利用指標實現動態數組

來源:互聯網
上載者:User

介紹:
        在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];

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.