程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++在數組元素個數未知情況下聲明數組,數組聲明

C++在數組元素個數未知情況下聲明數組,數組聲明

編輯:C++入門知識

C++在數組元素個數未知情況下聲明數組,數組聲明


  我們都從書上學習的方法,定義一個數組需要數組名、類型以及數組元素個數,一般定義必須明確元素的個數,否則無法通過編譯。

  1、

int a[];

 

  2、

int n;
int a[n];

  就想上面這兩種情況,肯定無法通過編譯的。

  當然有一種情況不用定義元素個數,就是在聲明的時候就將數組進行初始化賦值。

int a[] = {1,2,3,4}

  這種情況是可以的。

  那當我不想進行初始化賦值,又不能確定元素個數時,我們該如何聲明這個數組呢?

  我相信很多人遇到過這個問題,我也一樣。今天我終於找到這個問題的解決方案——利用動態聲明的方式聲明一個數組。

  首先,我們來看看一維數組的定義,代碼如下:

int n;
int *a = new int[n];

  當然,動態聲明一位數組,實質是根據n的值向內存申請了n*sizeof(int)大小的空間,在數組使用完之後,需要釋放這個空間:

delete []a;

  那麼二維數組如何通過動態聲明進行聲明呢?代碼如下:

int **a = new int*[m];  //首先聲明一組指向各行指針
for(int i = 0;i<m;i++)
    a[i] = new int[n]    //再聲明各行的每列元素的指針

  同樣,使用完數組還需釋放內存空間:

for(int i = 0; i<m;i++)
    delete []a[i];
delete []a;

  最後要注意的一點是,動態聲明的二維數組中,a[k]是一個int*類型,是一個指針,因此只能使用a[i][j]或*(*(a+i)+j)訪問相應的元素,絕對不能使用a[i*n+j]的方式訪問。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved