1. 程式人生 > 實用技巧 >[總結][數學][筆記]數學專題

[總結][數學][筆記]數學專題

■ 概述

  陣列,就是一個集合,裡面存放了相同型別的資料元素

特點

  1) 陣列中的每個資料元素都是相同的資料型別

  2) 陣列是由連續的記憶體位置組成,數組裡的資料放在一塊連續的記憶體空間

一維陣列

□ 一維陣列定義的三種方式

  1) 資料型別 陣列名[陣列長度];

int arr[5];
arr[0] = 10;
arr[1] = 20;
arr[2] = 30;
arr[3] = 40;
arr[4] = 50;

  2)資料型別 陣列名[陣列長度] = {值1,值2 ...};

int arr[5] = {10,20,30,40,50};

  3)陣列型別 陣列名[] = {值1, 值2 ...};

int arr[] = {10,20,30,40,50}; //編譯器可以通過大括號元素的個數推測陣列的長度
int arr[];   //報錯,定義陣列的時候,必須要有初始長度

◆ 總結:

  1) 陣列名的命名規範與變數名的命名規範一直,不要與變數重名

  2) 陣列下標識是從0開始索引的

□ 一維陣列陣列名

  ◆ 一維陣列名的用途:

  1)可以統計整個陣列在記憶體中的長度

sizeof(arr[0])  //獲取陣列第一個元素所佔記憶體大小
sizeof(arr)  //獲取陣列所佔記憶體大小

   2) 可以獲取陣列在記憶體中的首地址

cout << arr << endl; //
返回陣列arr的記憶體地址 cout << &arr[0] << endl; //返回陣列arr第一個元素的記憶體地址

   3)陣列名是常量,不可以進行賦值操作

arr = 100; //報錯

■二維陣列

□ 二維陣列定義

二維陣列就是在一維陣列上,多加一個維度

□二維陣列宣告

  宣告有以下四種方式:

    1) 資料型別 陣列名[行數][列數];

int arr[2][3];

arr[0][0]=1;
arr[0][1]=2;
arr[1][0]=3;
arr[1][1]=4;
arr[2][0]=5;
arr[2][1]=6;

for(int i = 0; i < 2
; i ++) { for(int j = 0; j < 2 ; j ++) { cout << arr[i][j] << endl; } }

    2) 資料型別 陣列名[行數][列數] = {{資料1,資料2},{資料3,資料4}};

    更加直觀,提高程式碼的可讀性,推薦使用

int arr1[2][3] = 
{
  {1,2,3},
  {4,5,6}
}

    3) 資料型別 陣列名[行數][列數] = {資料1,資料2,資料3,資料4};

int arr[2][3] = {1,2,3,4,5,6};

    4) 資料型別 陣列名[][列數] = {資料1,資料2,資料3,資料4};

     該種方式會通過初始資料元素和列數自動推算出行數,但是僅通過行數缺無法推斷出列數,比如行數是3,則到底是每行1個元素還是每行2個元素,是無法推測的

int arr[][3] = {1,2,3,4,5,6}; 

   注意:當進行初始化定時,可以省略行數,但不可以省略列數

□檢視二維陣列所佔記憶體空間

int arr1[2][3] = 
{
  {1,2,3},
  {4,5,6}
}

cout << sizeof(arr1) << endl;  //輸出:24
cout << sizeof(arr1[0]) << endl;  //輸出:12,二維陣列第一行佔用記憶體
cout << sizeof(arr1[0][0]) << endl;  //輸出:4,二維陣列第一元素佔用記憶體
cout << sizeof(arr1)/sizeof(arr1[0]) << endl;  //輸出:2,二維陣列的行數
cout << sizeof(arr1[0])/sizeof(arr1[0][0]) << endl;  //輸出:3,二維陣列的列數

double arr2[2][3] = 
{
  {1,2,3},
  {4,5,6}
}
cout << sizeof(arr2) << endl;  //輸出:48

□獲取二維陣列首地址

cout << arr1 << endl;   //返回二維陣列的首地址
cout << arr[0] << endl;   //返回二維陣列第一行首地址,與二維陣列的首地址相同
cout << arr[1] << endl;   //返回二維陣列第二行首地址,與二維陣列的首地址相同
cout << &arr[0][0] << endl;   //返回二維陣列第1元素的首地址,與二維陣列的首地址相同,檢視具體元素的地址需要使用取址符
cout << &arr[0][1] << endl;   //返回二維陣列第1元素的首地址,與二維陣列的首地址相同,檢視具體元素的地址需要使用取址符