<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>

                定義 | 同一類型多個元素的集合 --- | --- 本質 | 一片連續的內存空間 內存分布 | 數組在內存的分布式連續排列的 # 數組的初始化示例 ```c #include <stdio.h> int main(int argc, char const *argv[]) { int a[4];//初始化的時候就已經申請了內存了 for (int i = 0; i < 4; ++i) { a[i] = i; } for (int i = 0; i < 4; ++i) { printf("%d,%p\n", a[i],&a[i]); } return 0; } ``` 執行結果如下 ```js 0,0x7fff5fa2ca70 1,0x7fff5fa2ca74 2,0x7fff5fa2ca78 3,0x7fff5fa2ca7c ``` # 細看初始化 ## 數值類型初始化 初始化 | 內存占用 | 描述 ------- | ------- | ------- `int num1[3] = {1,2,3};` | 12 | 正常賦值 `int num2[3] = {1,2};` | 12 | 沒有初始化的元素,填充為0。 `double num3[3] = {1,2};` | 24 | 不足的元素,填充為`0.0000...` , 數組類型聲明,對其進行轉換 `double num4[] = {1,2};` | 16 | 確定了元素個數,可以省略中括號里面的元素個數的描述 占用內存我是以我當前環境為參考 https://mengkang.net/989.html ## char 數組初始化 初始化 | 內存占用 ------- | ------- `char a[] = {'a','b','c','d'};` | 4 `char b[4] = {"abcd"};` | 4 `char c[] = {"abcd"};` | 5 `char d[4] = "abcd";` | 4 `char e[] = "abcd";` | 5 雙引號初始化的時候,如果申請的內存空間夠用的情況下,會在末尾放置一個`\0`。 知識是網狀的,這塊和字符串的知識相關聯,但是初始化卻是數組的,所以在這里講解吧。 下面是字符數組的兩種初始化 ```c #include <stdio.h> int main(int argc, char const *argv[]) { char a[] = {'a', 'b', 'c', 'd'}; printf("a 的長度 %lu\n", sizeof(a)); for (int i = 0; i < sizeof(a); ++i) { printf("%c,ascii 碼為 %d\n", a[i], a[i]); } return 0; } ``` 結果為 ```c a 的長度 4 a,ascii 碼為 97 b,ascii 碼為 98 c,ascii 碼為 99 d,ascii 碼為 100 ``` 特殊的初始化,雙引號多字符組合初始化: ```c #include <stdio.h> int main(int argc, char const *argv[]) { char a[] = "abcd"; printf("a 的長度 %lu\n", sizeof(a)); for (int i = 0; i < sizeof(a); ++i) { printf("%c,ascii 碼為 %d\n", a[i], a[i]); } return 0; } ``` 結果 ``` a 的長度 5 a,ascii 碼為 97 b,ascii 碼為 98 c,ascii 碼為 99 d,ascii 碼為 100 ,ascii 碼為 0 ``` 發現在初始化的時候,在字符串的末尾添加了一個`ascii`碼為`0`的字符`\0`,這時候字符串的終止符,**這就是雙引號初始化的特殊性**。 # 二維數組 ```c type arrayname[x][y]; ``` 初始化方式列舉 ```c #include <stdio.h> int main(int argc, char const *argv[]) { int a[2][3] = { {1, 2, 3}, {4, 5, 6} }; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 3; ++j) { printf("%d\n",a[i][j]); } } return 0; } ``` ```c #include <stdio.h> int main(int argc, char const *argv[]) { int a[2][3] = {1, 2, 3, 4, 5, 6}; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 3; ++j) { printf("%d\n",a[i][j]); } } return 0; } ``` 上面兩種效果一樣。 ```c int main(int argc, char const *argv[]) { int a[2][3] = {1}; for (int i = 0; i < 2; ++i) { for (int j = 0; j < 3; ++j) { printf("%d\n",a[i][j]); } } return 0; } ``` 輸出結果 ```c 1 0 0 0 0 0 ``` 和一維數組一樣,其他未聲明的內存都用`0`都填充。因為類型是`int`
                  <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>

                              哎呀哎呀视频在线观看