<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                ## 一.數組 + 用來存放許多相同類型的數據,如一個班有很多的學生。 + 無論它是一維還是多維,它都占用連續的空間。 ## 二.一維數組 #### 1.定義和初始化 **基本格式** ```c //數組長度必須是一個常量 數據類型 標識符[數組長度] = {初始值,初始值,...}; ``` > 這個[數組長度]只是個修飾符,而不是類型的一部分。 **只定義但不初始化** 這時數組中每個元素的初值都是不確定的。如果是靜態的,則每個元素的初值為0。 ```c int a[10]; ``` **定義并初始化** ```c //初始化全部元素 int a1[5] = {1,2,3,4,5}; //初始化前3個元素,后面兩個元素則被編譯器初始化為0. int a2[5] = {1,2,3}; //下面這句話也是對的,一維的長度可省,編譯器會自動判斷長度。省掉后數組必須初始化,不然編譯器咋知道你要多大的空間。 int a3[] = {1,2,3}; //下面這句話是錯的哎 int a4[1] = {1,2,3}; ``` #### 2.訪問數組 **訪問和修改數組元素** 用數組名+下標訪問和修改即可。 **注意,編譯器不會檢查數組越界。** ```c a1[1] = 100; ``` #### 3.數組名稱的含義 + 它是數組類型,不是指針類型。可以 `sizeof` 數組名試試。 + **萬惡之源** 大多數用到數組名的地方,編譯器會自動將其轉換為指向數組第一個元素的指針右值。除了用 `sizeof` 運算符、`typeid` 運算符、取地址運算符 `&` 訪問數組,或用數組初始化引用。 **不可以對數組整體賦值** 你能對一個右值賦值嘛? 此外,也不可以用一個數組去初始化另一個數組。 > 需要注意的是,數組是 **可復制的** 。但只是數組到指針右值的轉換導致不能直接使用 `=` 進行賦值或用另一個數組來初始化。 #### 4.向函數傳遞一維數組 + 如果形參是數組,則編譯器會自動替換成指針。 + 所以形參中聲不聲明一維數組的大小是無所謂的。 ```c void sort(int arr[],int size); //編譯器替換后,arr就是指針 void sort(int *arr,int size); ``` > 注意,這個不是轉換,而是直接替換。轉換會生成一個新的值,而不改變自身值,而替換,就很簡單粗暴了。 ```c int i = 2; double d = i;//i的值會拷貝一份,轉換成double型,但是操作完后i的值仍是int。 ``` #### 5.向函數返回一維數組 這是不允許的操作~~ 下面這個寫法也是錯的。 函數返回的時候a已經沒了,返回的地址就不知道指向什么地方了。 ```c int* return_a_array() { int a[10]; return a; } ``` ## 三.二維數組 #### 1.定義和初始化 **基本格式** ```c //數組長度必須是一個常量 數據類型 標識符[一維的長度][二維的長度] = 初始化列表; ``` 跟上面的一維數組的定義和初始化差不多的,你可以只定義而不初始化,也可以定義的時候初始化。 對于初始化語句,你可以進行分開賦值,也可以進行連續賦值: ```c //連續賦值 int arr1[2][3] = {1,2,3,4,5,6};//arr1:{{1,2,3},{4,5,6}} int arr2[2][3] = {1,2};//arr2:{{1,2,0},{0,0,0}} //分開賦值 int arr3[2][3] = {{1,2,3},{4,5,6}};//arr3:{{1,2,3},{4,5,6}} int arr4[2][3] = {{1,2},{4,5}};//arr4:{{1,2,0},{4,5,0}} ``` 在多維數組的定義和初始化中,只能省掉一維的長度。 ```c //得到 int[2][3] int arr[][3] = {1,2,3,4,5,6}; ``` #### 2.訪問數組 **訪問和修改數組元素** 用數組名+下標訪問和修改即可。 ```c arr[1][1] = 100; ``` #### 3.向函數傳遞二維數組 + 如果形參是數組,則編譯器會自動替換成指針。 + 因為這個指針是指向數組的,因此二維部分需要指明大小。 ```c void output(int arr[][20],int size); //編譯器替換后,arr就是指針 void output(int (*arr)[20],int size); ``` #### 3.二維數組各維度的類型 二維數組可以看成 一個每個元素都是數組類型的一維數組。 例如, ```c int a[5][10]; ``` `a` 是一個二維數組,類型為 `int[5][10]`。 `a[0]` 是一個一維數組,類型為 `int[10]`。 `a[0][0]` 則是整型。 ## 三.數組與指針的關系 1. 在大多數表達式下,數組名自動轉換成指向數組首元素的指針。 2. **[11+]\[$]** 使用數組初始化一個 `auto`關鍵字定義的變量時,得到一個指向數組首元素的指針。 3. **[11+]\[$]** 獲取數組的首尾地址 ```c++ //請勿使用VC6.0等古董編譯器運行此例 int score[] = {56, 87, 64, 98, 74, 56, 78, 69, 88, 99}; int *start = std::begin(score);//指向第一個元素 int *back = std::end(score);//指向末尾元素的下一個元素 ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看