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

c++數組操作,數組操作

編輯:C++入門知識

c++數組操作,數組操作


一、數組定義和初始化

   1: 一維數組初始化:

   2: 標准方式一: int value[100]; // value[i]的值不定,沒有初始化

   3: 標准方式二: int value[100] = {1,2}; // value[0]和value[1]的值分別為1和2,而沒有定義的value[i>1]

   4:                                  // 則初始化為0

   5: 指針方式: int* value = new int[n]; // 未初始化

   6:            delete []value;  // 一定不能忘了刪除數組空間

   7:  

   8: 二維數組初始化:

   9: 標准方式一: int value[9][9]; // value[i][j]的值不定,沒有初始化

  10: 標准方式二: int value[9][9] = {{1,1},{2}}; //value[0][0,1]和value[1][0]的值初始化,其他初始化為0

  11: 指針方式一: int (*value)[n] = new int[m][n];

  12:              delete []value; // n必須為常量,調用直觀。未初始化

  13: 指針方式二: int** value = new int* [m];

  14:              for(i) value[i] = new int[n];

  15:              for(i) delete []value[i];

  16:              delete []value; // 多次析構,存儲麻煩,未初始化

  17: 指針方式三: int * value = new int[3][4]; // 數組的存儲是按行存儲的

  18:              delete []value; // 一定要進行內存釋放,否則會造成內存洩露

  19:  

  20: 多維數組初始化:

  21: 指針方式: int * value = new int[m][3][4]; // 只有第一維可以是變量,其他幾維必須都是常量,否則會報錯

  22:            delete []value; // 一定要進行內存釋放,否則會造成內存洩露

數組初始化的大括號後面要加“;”來表示結束。

數組訪問:

指針形式:如二維數組value[i][j]的訪問:

*(value[i] + j) 或

(*(value + i))[j]

二、數組作為參數傳遞

   1: 一維數組參數傳遞:

   2: void Func(int *value);

   3: 或者是

   4: void Func(int value[]);

   5:  

   6: 二維數組傳遞:

   7: 定義是 int **value;的傳遞

   8: void Func(int **value);

   9: 定義是 int (*value)[n] = new int[m][n];的傳遞

  10: void func(int (*value)[n]); // sizeof(p)=4,sizeof(*value)=sizeof(int)*n;

三、數組與指針關系

1、數組名的內涵在於其指代實體是一種數據結構,這種數據結構就是數組;

2、數組名的外延在於其可以轉換為指向其指代實體的指針,而且是一個指針常量;

3、指向數組的指針則是另外一種變量類型,(在win32平台下,長度為4),僅僅意味著數組存放地址。

4、數組名作為函數形參時,在函數體內,其失去了本身的內涵,僅僅只是一個指針,而且在其失去其內涵的同時,它還失去了其常量特性,可以作自增、自減等操作,可以被修改。

四、數組的存儲格式

多維數組在內存中存儲時是按照最低維連續的格式存儲的,如二維數組{{1,2},{3,4}}在內存中的位置是這樣順序的“1,3,2,4”,這跟matlab是有區別的,matlab是按列進行存儲的。在使用指針進行索引時很有用。

五、字符數組

char類型的數組被稱作字符數組,通常用來存儲字符串。字符串是附加有特殊字符(串尾標志)的字符序列。串終止字符表明字符串已經結束,該字符由 轉義序列‘\0’定義,有時被稱為空字符,占用一個字節,其中8位全為0。這種形式的字符串通常被稱為C型字符串,因為以這樣的方式定義字符串是在C語言 中推出的,在C++一般使用string,而MFC中則定義了CString類。

字符串中每個字符占用一個字節,算上最後的空字符,字符串需要的字節數要比包含的字節數多一個。如:

char movie_star[15] = “Marilyn Monroe”;

這裡字符串是14個字符,但是要定義15個字符串的數組。也可以不指定字符數組的個數。如:

char movie_star[] = “Marilyn Monroe”;

六、內存洩露

我們定義了一個指針,然後給它賦予了一個地址值,然後又不再使用,但是沒有delete,那麼當給指針賦予其他的地址值時,原來的內存將無法釋放,這就叫做內存洩露。

分類: C++學習

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