一江春水向東流

          做一個(gè)有思想的人,期待與每一位熱愛思考的人交流,您的關(guān)注是對(duì)我最大的支持。

            BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
            44 隨筆 :: 139 文章 :: 81 評(píng)論 :: 0 Trackbacks

          ?C語(yǔ)言中動(dòng)態(tài)分配數(shù)組(一維)
          ?
          ??? 當(dāng)初學(xué)Pascal的時(shí)候就想過(guò)這個(gè)問(wèn)題:如何動(dòng)態(tài)的定義及使用數(shù)組呢?記得一般用數(shù)組的時(shí)候都是先指定大小的。當(dāng)時(shí)問(wèn)老師,老師說(shuō)是不可以的。后來(lái)又問(wèn)了一位教C++的老師,他告訴我在C++里用new可以做到,一直不用C++,所以也不明白。今天在逛論壇時(shí)終于找到了C語(yǔ)言中的用法(看原貼):

          ??? int *a;
          ??? int N;
          ??? scanf("%d", &N);
          ??? a = (int *) malloc(N * sizeof(int));
          ??? ....
          ??? free(a);

          ??? 這樣就動(dòng)態(tài)分配了數(shù)組a[N]。數(shù)組的長(zhǎng)度N可輸入確定,也可用程序中的變量確定。但要注意程序結(jié)束后要用free()將其釋放,否則內(nèi)存會(huì)泄漏。


          --------------------------------------------------------------------------------
          驗(yàn)證一下:

          #include <stdio.h>
          #include <stdlib.h>
          int main()
          {
          ??? int i = 0;

          ??? int *a;
          ??? int N;

          ??? printf("Input array length: ");
          ??? scanf("%d", &N);
          ??? printf("\n");

          ??? a = (int *) malloc(N * sizeof(int));
          ???
          ??? for(i = 0; i < N; i++)
          ??? {
          ??????? a[i] = i + 1;

          ??????? printf("%-5d", a[i]);
          ??????? if ((i + 1) % 10 == 0)
          ??????????? printf("\n");
          ??? }

          ??? free(a);

          ??? printf("\n");???
          ??? return 0;
          }

          運(yùn)行結(jié)果(VC):
          =========================================================
          Input array length: 100↙

          1??? 2??? 3??? 4??? 5??? 6??? 7??? 8??? 9??? 10
          11?? 12?? 13?? 14?? 15?? 16?? 17?? 18?? 19?? 20
          21?? 22?? 23?? 24?? 25?? 26?? 27?? 28?? 29?? 30
          31?? 32?? 33?? 34?? 35?? 36?? 37?? 38?? 39?? 40
          41?? 42?? 43?? 44?? 45?? 46?? 47?? 48?? 49?? 50
          51?? 52?? 53?? 54?? 55?? 56?? 57?? 58?? 59?? 60
          61?? 62?? 63?? 64?? 65?? 66?? 67?? 68?? 69?? 70
          71?? 72?? 73?? 74?? 75?? 76?? 77?? 78?? 79?? 80
          81?? 82?? 83?? 84?? 85?? 86?? 87?? 88?? 89?? 90
          91?? 92?? 93?? 94?? 95?? 96?? 97?? 98?? 99?? 100

          =========================================================

          ?

          posted on 2007-04-13 21:36 allic 閱讀(3330) 評(píng)論(0)  編輯  收藏 所屬分類: C/C++
          主站蜘蛛池模板: 手游| 沙田区| 襄樊市| 丰原市| 宽甸| 绥芬河市| 白玉县| 泰顺县| 山丹县| 炉霍县| 涿鹿县| 桐乡市| 神农架林区| 保靖县| 屏东县| 武强县| 栖霞市| 湘潭市| 贵阳市| 开远市| 六盘水市| 普定县| 镇沅| 秦安县| 年辖:市辖区| 柏乡县| 留坝县| 洞口县| 东源县| 光泽县| 泰宁县| 通辽市| 河西区| 鹤峰县| 宁夏| 融水| 西充县| 城固县| 东海县| 长泰县| 横峰县|