陣列的簡單總結

2021-08-11 02:32:05 字數 3676 閱讀 2815

一維陣列的建立和初始化。

陣列的建立:陣列是一組相同型別元素的集合。

陣列的建立方式:

type_t  arr_name  [const_n]
//type_t 是指數組的元素型別;

//const_n是乙個常量表示式,用來指定陣列的大小。

陣列建立例項:

int arr[10];

char arr [8];

float arr[5];

double arr[15];

建立陣列,[ ]中必須為常量,不能為變數。

陣列的初始化:陣列的初始化是指,在建立陣列的同時給陣列的內容一些合理初始值(初始化)。 看**:

int arr1[10] = ; 

int arr2 = ;

int arr3[5] = ;

char arr4[3] = ;

char arr6 = "abcdef";

......

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

一維陣列的使用

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

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

int arr[10];

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

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

指標的初步介紹

1. 記憶體中的內乙個記憶體單元(位元組)對應乙個位址。

2. 在32位的平台上指標的大小是4個位元組。64位平台是8個位元組。 所以我們在c語言中取出某個變數的位址。

int n = 10;

&n;//取出n的位址。

指標可以理解為乙個變數,是乙個專門用來存放位址的乙個變數。 通常我們講的指標其實是乙個指標變數。 那我們來看看指標變數的定義。

int *ptr = null; //定義乙個整 型的指變量,初始化為null .

char *ptr = null; //定義乙個字元的指標變量,初始化為null .

double *ptr = null; //定義乙個雙精度浮點數的指標變量,初始化為null .

當我們拿到指標的時候也要能找到指標所指向的變數,這裡就是我們學過的 * (解引用 操作符)的作用了。

int n = 10;

int *p_n = &n;//將num的位址存放在p_n指標變量中。

*p_n = 20;//改變的其實是n這個變量的內容。

二維陣列的建立和初始化

二維陣列的建立:

//陣列建立

int arr[3][4];

char arr[3][5];

//陣列初始化

int arr[3] [4] = ;

int arr[3] [4] = ,};

int arr[ ] [4] =,};

二維陣列在記憶體中的儲存和一維陣列一樣,二維陣列在記憶體中也是連續儲存的。

有關陣列的運算

// 一維陣列

int a = ; //16

printf("%d\n",sizeof(a)); //4

printf("%d\n",sizeof(a+0)); //4

printf("%d\n",sizeof(*a)); //4

printf("%d\n",sizeof(a+1)); //4

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

printf("%d\n",sizeof(&a)); //4

printf("%d\n",sizeof(&a+1)); //4

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

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

//字元陣列

char arr[ ] = ;

printf("%d\n", sizeof(arr)); //7

printf("%d\n", sizeof(arr+0)); //4

printf("%d\n", sizeof(*arr)); //1

printf("%d\n", sizeof(arr[1])); //1

printf("%d\n", sizeof(&arr)); //4

printf("%d\n", sizeof(&arr+1)); //4

printf("%d\n", sizeof(&arr[0]+1)); //4

printf("%d\n", strlen(arr)); //6

printf("%d\n", strlen(arr+0)); //6

printf("%d\n", strlen(*arr)); //err

printf("%d\n", strlen(arr[1])); //err

printf("%d\n", strlen(&arr)); //6

printf("%d\n", strlen(&arr+1)); //隨機值

printf("%d\n", strlen(&arr[0]+1)); //5

char *p = "abcdef";

printf("%d\n", sizeof(p));//4

printf("%d\n", sizeof(p + 1));//4

printf("%d\n", sizeof(*p));//1

printf("%d\n", sizeof(p[0]));//1

printf("%d\n", sizeof(&p));//4

printf("%d\n", sizeof(&p + 1));//4

printf("%d\n", sizeof(&p[0] + 1));//4

總結

sizeof(陣列名)–陣列名表示整個陣列,求的是整個陣列的大小;

&陣列名–陣列名表示整個陣列,取出來的是陣列的位址;

除此之外,所有的陣列名都表示首元素的位址。

陣列作為函式引數

陣列作為函式引數的時候,不會把整個陣列的傳遞過去。實際上只是把陣列的首元素的 位址傳遞過去了。所以即使在函式引數部分寫成陣列的形式:

int arr 表示的依然是乙個指標: int *arr

轉乙個字尾陣列的簡單總結

然後就是怎麼快速求所有字尾的順序了,其中的關鍵是如何減少兩個字尾比較的複雜度 方法是倍增法,定義乙個字串的k 字首為該字串的前k個字元組成的串,關於在k 字尾上的定義suffix k,i sa k,i 和rank k,i 類似於前,則有 這樣就能在常數時間內比較suffix 2 k,i 之間的大小,...

陣列的總結

一維陣列 函式的宣告 1 一維陣列的建立及初始化 2 一維陣列的使用 3 一維陣列在記憶體中的儲存 4 指標的初步了解 5 一維陣列的指標訪問 int main int arr1 10 建立乙個容量為10的陣列並初始化部分值 int arr2 建立乙個陣列 char arr3 10 abc 該陣列是...

陣列的簡單知識

陣列 要想定義多個重複型別的變數,那麼使用陣列是乙個很好的方法,乙個陣列裡面存放的資料的型別必須是一樣的。即同乙個資料型別。一維陣列 定義格式 資料型別 陣列名 null 陣列名 new 資料型別 長度 可以合併資料型別 陣列名 new 資料型別 長度 或者 資料型別 陣列名 int sore nu...