302班

          java突擊隊
          posts - 151, comments - 74, trackbacks - 0, articles - 14
            BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理

          有的書上是這樣寫的:
          #include <stdio.h>
          int main (void)
          {
          int test;
          printf ("OK/n");
          scanf ("%i",&test);
          unsigned long long int aa[test];
          printf ("aa[test]=%i/n",aa[test]);
          retrun 0;
          }
          我按照書上說的那樣聲明可變長度的數(shù)組,為什么不能編譯呢?
          書上的格式是這樣的:unsigned long long int aa[test]

          c99的編譯器才支持這種可變數(shù)組
          如果你不是c99的編譯器
          那你只要使用
          #define test **來進行常量定義

          《Programming in C》,里面講數(shù)組時講到了“變量長度數(shù)組”,說有的編譯器支持這樣的用法:

          int i=10;
          char buf[ i ];

          測試發(fā)現(xiàn)VC6是不支持這個的,但是GCC支持!我寫了這樣的測試代碼:
          發(fā)現(xiàn)程序居然也支持i是負數(shù),而且在負數(shù)的情況下,GCC的內(nèi)存分配雖然怪異,但也是保證正確的。

           
          可以用動態(tài)內(nèi)存來為數(shù)組分配空間:
          #include <malloc.h>
          #include <stdio.h>

          void f(int k, int m)
          {
          int i, size = m >= k ? m : k;
          int* a = (int*)malloc(sizeof(int)*size);

          if( a == NULL )
          printf( "Insufficient memory available\n" );
          else
          for(i = 1; i <= size; ++i)
          {
          a[i] = i;
          printf("%d ",a[i]);
          }

          free(a); /*記住要釋放掉分配的內(nèi)存,否則內(nèi)存泄露*/
          }


          int main()
          {
          f(3,5);
          }
          但我試了一個這樣的程序。只能編譯,卻不能執(zhí)行
          #include <malloc.h>
          #include <stdio.h>

          void f(int k, int m)
          {
          int i, size = m >= k ? m : k;
          int* a = (int*)malloc(sizeof(int)*size);

          if( a == NULL )
          printf( "Insufficient memory available\n" );
          else
          printf("Please enter %i int numbers!\n",size);
          for(i=1;i<=size;++i)//或者從0開始我都試過啦
          {
              scanf("%i",a[i]);
          }
          for(i = 1; i <=size; ++i)

           printf("%d   ",a[i]);
          }

          free(a); /*記住要釋放掉分配的內(nèi)存,否則內(nèi)存泄露*/
          }


          int main(void)
          {
          f(3,5);
          return 0;
          }

          主站蜘蛛池模板: 通城县| 佛坪县| 淮阳县| 怀远县| 光山县| 遂溪县| 拉萨市| 日土县| 汽车| 凤凰县| 庄浪县| 九寨沟县| 绵竹市| 怀宁县| 周宁县| 方城县| 灵石县| 尼玛县| 女性| 平舆县| 平武县| 孟村| 滕州市| 玛沁县| 黎城县| 老河口市| 高阳县| 沙洋县| 镶黄旗| 黄冈市| 惠来县| 民丰县| 高阳县| 邯郸县| 安泽县| 海林市| 桓台县| 绥中县| 洛川县| 拉孜县| 大新县|