陣列的相關知識

2021-08-20 04:15:01 字數 2757 閱讀 8260

1.一維陣列的定義:

陣列是指可以在記憶體中連續儲存多個元素的結構,與變數不同的是變數是訪問乙個變數的容器;並且需要注意的是陣列中所有的元素是具有相同的結構型別。陣列的定義與變數相同。

2.一維陣列的類別:

可以是所有的基本型別,比如:int、char、float、long、unsigned、double等。

3.一維陣列的一般形式:

陣列名【下標】,下標的取值範圍是從0到陣列元素個數(陣列長度)減1

例如:陣列 arr[5]的元素下標就是從0到4.

陣列的建立方式:

type_t    arr_name   [const_n];

type_t    指數組的元素型別

const_n   是常量表示式,指定陣列的大小

常見錯誤:

int  count=10;

int  arr2[count];     陣列大小不能為變數,中只能給乙個常量

★一維陣列的初始化:給所有元素初始化——int a[10]= 即初始化整形陣列a的十個元素都為0;

或者給部分元素初始化—— inta[10]=

這種方法是陣列前三個分別初始化為1,2,3而之後的都為0。

或者逐個元素a[10]=。注意

a=這種是可以的

不給出陣列元素個數

。char  arr1[3]=; 正確的初始化

char   arr2= ;正確的初始化

char   arr3=''abcdefg''; 正確的初始化

陣列在建立的時候如果不想指定陣列的大小就得初始化,陣列元素的個數可以根據初始化的內容來確定

4.一維陣列的使用:

1.陣列是使用下標來訪問的,下標是從0開始

2.陣列的大小可以通過計算得到  

例如:int arr[10];

int  sz=sizeof(arr)/sizeof(arr[0]);

一維陣列在記憶體中的儲存:陣列在記憶體中是連續存放的 

#include

int main()

;int i=0;

for(i=0;i

return 0;

}執行結果表明:隨著陣列下標的增長,元素的位址也在有規律的遞增

指標可以理解為乙個變數,專門用來存放位址的乙個變數

int *ptr=null;定義乙個整形的指標變數,初始化為null

char *ptr=null;定義字元指標

int n=10;

int *p_n=&n;

*p_n=20;

5.二維陣列

★定義:若乙個一維陣列,它的每乙個元素 也是型別相同的一維陣列,便構成二維陣列,所謂陣列的型別相同是指數組大小、元素型別相同。

定義形式與一維陣列類似:

儲存類別  型別識別符號  陣列名識別符號[常量表示式 1][常量表示式 2]

例如 :int a[3][[4];   float b[4][5];

陣列a元素排列順序如下:

a[0][0]   a[0][1]  a[0][2]  a[0][3]

a[1][0]    a[1][1] a[1][2]  a[1][3]

a[2][0]    a[2][1] a[2][2]  a[2][3]

★初始化:給所有元素賦值 int a[2][3]= 每個元素值為  a[0][0]=1;a[0][1]=2;a[0][2]=3;a[1][0]=4;a[1][1]=5;a[1][2]=6.

分行賦值  例如:int a[2][3]=,,};

部分元素初始化 例如:int a[2][3]= ,,};未初始化的元素為0

注意:二維陣列的行可以省略,但是列必須寫明

int  arr[4]=,};

6.二維陣列的指標訪問

迅雷的筆試題,**如下

[cpp]

#include 

using

namespace

std;  

const

introw = 2, col = 3;  

intmain()  

a是乙個int **型別的指標。表示式*(a+row)返回乙個int *型別的指標。*(a+row)+col還是乙個int *型別指標

所以,*(*(a+row)+col)就是乙個int型別的變數了。

int  a[3][4]=;

printf("%d\n",sizeof(a));   48  12x4=48

printf("%d\n",sizeof(a[0][0]));  4

printf("%d\n",sizeof(a[0]));   4x4=16  表示第一行所有元素所佔空間的大小

printf("%d\n",sizeof(a[0]+1)); 4  表示第一行第二個元素所佔的空間大小為4個位元組

printf("%d\n",sizeof(a+1));  4  表示第一行加一則為第二行位址  

printf("%d\n",sizeof(&a[0]+1));  4  第二行的位址

printf("%d\n",sizeof(*a));  16  第一行所有元素所佔空間大小

printf("%d\n",sizeof(a[3]));  16    sizeof內部不做任何運算

總結:陣列名代表整個陣列的時候只有兩種情況

其一:sizeof(陣列名),這裡的陣列名代表整個陣列

其二:&陣列名,這裡的陣列名表示整個陣列

陣列作為函式引數的時候,不會把整個陣列傳遞過去,實際上是把陣列首元素位址傳遞過去了,所以即使在函式引數部分寫成陣列形式:int arr表示的依然是乙個指標:int *arr

陣列的相關知識

陣列 就是只能存放一種資料型別,比如int型別的陣列 float型別的陣列,裡面存放的資料稱為 元素 陣列的定義 首先宣告陣列的型別,然後宣告陣列元素的個數 也就是需要多少儲存空間 格式 元素型別 陣列名 元素個數 一維陣列與函式引數 一維陣列的元素作為函式實參,與同型別的簡單變數作為實參一樣,是單...

陣列的相關小知識

一維陣列的建立 陣列的建立 陣列是一組相同型別元素的集合。type t arr name const n type t為指數組的元素型別 arr name為陣列名 const n為常量表示式,用來指定陣列的大小。型別說明符是任一種基本資料型別或構造資料型別。陣列名是使用者定義的陣列識別符號。方括號中...

陣列相關知識的整理

陣列有什麼特點 怎麼用相關的演算法 特點 eg int score score new int 5 初始化 動態初始化 賦值 注意事項 快速初始化氣泡排序public static void main string args arrsort arr public static void arrsor...