1. 程式人生 > >函式與陣列的相關重點草圖

函式與陣列的相關重點草圖

呼叫函式,就要在棧上開闢空間,那麼現在我們來演示一下函式遞迴在記憶體中的路線:(函式遞迴也是自己呼叫自己的過程)


 

陣列初始化:陣列在定義的時候整體初始化【但是不能整體賦值】

 

 


 

陣列的一般知識總結:

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

2 陣列的初始化,是指建立陣列的同時賦給陣列一些合理的初始值

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

4 char arr1[] = "abc";              數組裡面有: 'a' 'b' 'c'  '\0'    【'\0'】是字串結束的標誌   【'\0' 就是 0 ,把字元 '0' 轉義為 0】
   char arr2[3] = {'a','b','c'};      數組裡面有三個字元:'a' 'b' 'c'

5  [ ] ,下標引用操作符。它其實就陣列訪問的操作符

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

7 陣列的大小可以通過計算得到 :

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

8 二維陣列的建立和初始化

int  arr [2][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} };

int  arr [ ][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10} };      注意:   arr [可以省略 ] [ 不能省略 ]

int  arr1 [2][4] = { {2, 3},  {4, 5} };         實際上是 : { {2, 3, 0, 0},  {4, 5, 0, 0} }

int arr2 [3] [2] = { {1,2}, {3,4} };       實際上是 : { {1,2}, {3,4},{0,  0} }

9 二維陣列在記憶體中的儲存和一維陣列一樣,一次性開闢,元素從低地址到高地址依次連續增大

10 陣列作為函式引數

陣列作為函式引數的時候,不會把整個陣列的傳遞過去。
實際上只是把陣列的首元素的地址傳遞過去了。

所以即使在函式引數部分寫成陣列的形式: int arr[ ] 表示的依然是一個指標: int *arr 。

注意:陣列傳參,如果函式內部需要知道陣列元素個數,應該在函式外部算出元素個數,以引數的形式傳遞給函式。