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

                企業??AI智能體構建引擎,智能編排和調試,一鍵部署,支持知識庫和私有化部署方案 廣告
                [TOC] # 數組 定義一個數組并把他初始化為0,是個好習慣 int a[10]={0}; //java不需要這樣,java會自動的 ## 一維數組指針和二維數組指針 二維數組指針是比如 `int * [4]`,因為二維數組名指向一維數組 一維數組是`char *`類似這種 ## 數組名是個常量指針 ~~~ //這樣不可以 arr = NULL; ~~~ 在這2種情況下,數組名不是指向首元素的 sizeof和&arr取地址 ~~~ void printArray(int *arr, int len) { for (int i = 0; i < len; i++) { printf("%d\n", arr[i]); //也可以這樣 printf("%d\n", *(arr + i)); } } ~~~ ## 數組指針類型和數組首元素指針類型 定義一個指向數組的指針 ~~~ int main() { int arr[5] = {1, 2, 3, 4, 5}; &arr; //我們先定義數組類型,再定義數組指針 typedef int(ARRAY_TYPE)[5]; ARRAY_TYPE myarray; //等于 int myarray[5] for (int i = 0; i < 5; i++) { myarray[i] = i * i; } ARRAY_TYPE *p = &myarray; //不能是指向首元素了,這邊是數組指針了 //打印元素, 數組指針取地址等于數組名,數組名等于首地址 int ele = *(*p + 3); printf("%d\n", ele); getchar(); return 0; } ~~~ ~~~ int arr[5] = {1, 2, 3, 4, 5}; //定義數組指針類型 typedef int(*ARRAY_POINT)[5]; ARRAY_POINT pArr = &arr; ~~~ ~~~ int main() { int arr[] = {1, 2, 3, 4, 5, 6}; typedef int (*ARRAY_POINT)[6]; ARRAY_POINT pArr = &arr; printf("%d \n", *((*pArr) + 1)); getchar(); return 0; } ~~~ 輸出 ~~~ 3 ~~~ ## 一維數組定義 數組就是在內存中連續相同類型的變量空間 ~~~ int a[10]; //定義了10個int,第一個變量名是a[0],最后一個是a[9],沒有a[10]這個變量 ~~~ 這10個變量在內存中的位置是連續的 定義一個數組的時候,[]里面要用常量 但使用數組的時候里面可以是常量可以是變量 **數組在內存的存儲方式** 同一個數組的所有成員都是相同的數據類型,同時所有的成員在內存中的地址是連續的,數組名是一個地址的常量,代表數組中首元素的地址 ~~~ int a[10]; a[0]=1; a[3]=5; printf("%p,%p\n",a,&a[0]); ~~~ 2個地址是一樣的 但是`a[0] +1` 代表下個元素,而a+1代表移動過整個數組 數組元素+1 (sizeof(數據類型)) 數組名+1 (sizeof(數組名)) ### 遍歷數組 ~~~ int a[]={4,5,6,7,8,9,12,34}; int i; for (i = 0; i < sizeof(a)/sizeof(a[0]); ++i) { printf("a[%d] = %d\n",i,a[i] ); } ~~~ ## 二維數組 格式: `數據類型 數組名 [行個數] [列個數]` ~~~ int a2[2][10]; //a2是一個二維數組,這個二維數組中包含2個一維數組,a2[0],a2[1],這2個數組是連續的 ~~~ 二維數組的數組名代表首元素的地址的常量 ~~~ int a2[2][10]; printf("%p,%p,%p\n", a2,a2[0],&a2[0][0]); //值是一樣的 ~~~ ### 二維數組的初始化 ![](https://box.kancloud.cn/fbae30fb318868450fea3c6997d3c969_1082x314.jpg) ### 二維數組的遍歷 ~~~ int main(int argc, char const *argv[]) { int a3[][5]={{1,2,3,4,5},{6,7,8,9,10},{11,12,13,14,15}}; for (int i = 0; i < sizeof(a3)/sizeof(a3[0]); ++i) { for (int j = 0; j < sizeof(a3[0])/sizeof(a3[0][0]); ++j) { printf("a3[%d][%d] = %d\t", i,j,a3[i][j]); } printf("\n"); } return 0; } ~~~ ### 二維數組名 ~~~ int main() { int arr[3][5] = { {1, 2, 3, 4, 5}, {6, 7, 8, 9, 10}, {11, 12, 13, 14, 15} }; //二維數組的數組名和一維數組一樣 int a = *(*(arr + 1) + 2); printf("%d\n", a); //8 getchar(); return 0; } ~~~ ~~~ int arr[3][3] = { {1, 2, 3}, {6, 7, 8}, {11, 12, 13} }; arr是 int(*)[3] 類型的 ~~~ ~~~ char *arr3[] = {"aaa", "bbb", "ccc"}; arr3是char **類型的 ~~~ ## char數組 字符串就是子符數組以'\0'結尾 ~~~ char a[10]; a[0]='a'; a[1]='b'; a[2]='c'; a[3]='\0'; printf("%s\n",a ); ~~~ ~~~ char a[10]="hello"; a[3]=0; //對于字符串來講是hel,因為0結尾,0就是\0的ascii碼 但是對于數組來說成員數量沒有發生變化 ~~~ 一個char數組中可以有多個0,字符串只能一個 **scanf錄制到char數組** ~~~ int main() { char arr[100]; //scanf默認遇到空格會結束,這樣的意思是遇到\n才結束 scanf("%[^\n]", arr); printf("%s\n", arr); system("pause"); return EXIT_SUCCESS; } ~~~ ## 查看數組內存結構 ~~~ int main() { //數組內存結構 int scores[5] = { 99 ,10, 11, 15, 9}; printf("%p\n", &scores[0]); system("pause"); return EXIT_SUCCESS; } ~~~ 在system那設置斷點 然后調試,會出現個內存地址,復制那地址,不要結束調試 然后在調試->窗口->內存->選擇一個 把你剛才出現的內存地址復制到那 ![](https://box.kancloud.cn/089b1ee117f56a12976d05f29a176a53_642x310.png) int是四個字節,上面結果是16進制,涉及到內存大小端對齊,看的時候是從后到前 我們打開計算器 ![](https://box.kancloud.cn/7ba8655f455b7fc6d74a7c409e79f95a_1570x1294.png) 可以看到63的十六進制是99
                  <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>

                              哎呀哎呀视频在线观看