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