• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • c下不能隨便在語句中聲明變量?

    發表于:2007-05-25來源:作者:點擊數: 標簽:隨便不能聲明語句變量
    我寫c程序,發現好像必須得把變量聲明在函數的首部,不能在語句中來聲明一個變量。是這樣嗎? vaaub 回復于:2004-04-05 11:38:32 比如我現在想讀入一個命令行參數,然后聲明一個數組,數組的大小就是這個命令行參數指定的。好像這樣就不行。 lenovo 回復于

    我寫c程序,發現好像必須得把變量聲明在函數的首部,不能在語句中來聲明一個變量。是這樣嗎?

     vaaub 回復于:2004-04-05 11:38:32
    比如我現在想讀入一個命令行參數,然后聲明一個數組,數組的大小就是這個命令行參數指定的。好像這樣就不行。

     lenovo 回復于:2004-04-05 11:40:33
    你說得沒錯。
    還有c語言中數組定義必須指定它的大小,
    而不能用變量來指定它的大小。

     FH 回復于:2004-04-05 11:40:50
    [quote:fd71d6c119="vaaub"]我寫c程序,發現好像必須得把變量聲明在函數的首部,不能在語句中來聲明一個變量。是這樣嗎?[/quote:fd71d6c119]
    是的。
    至于你的第二個問題,可以使用malloc。

     vaaub 回復于:2004-04-05 11:49:21
    多謝兩位。

     jefftsai2050 回復于:2004-04-05 12:04:01
    [quote:a89cfba522="vaaub"]我寫c程序,發現好像必須得把變量聲明在函數的首部,不能在語句中來聲明一個變量。是這樣嗎?[/quote:a89cfba522]

    c++的語法支持隨時聲明變量,對于數組定義,例如 int a[10],這是靜態分配,需要在編譯時就知道數組大小,所以這里不能使用變量;
    如果要定義可變數組,必須采用如下的形式:int * a = new int(size);

     whyglinux 回復于:2004-04-05 12:39:02
    [quote:4969e361c5="jefftsai2050"]
    ... 對于數組定義,例如 int a[10],這是靜態分配,需要在編譯時就知道數組大小,所以這里不能使用變量;
    如果要定義可變數組,必須采用如下的形式:int * a = new int(size);
    [/quote:4969e361c5]

    不同意上述結論。在 C++ 中可以使用變量來定義數組。如下面的數組定義是合法的。
    [code:1:4969e361c5]
    int num;
    num = 10;
    int a[num];
    [/code:1:4969e361c5]

     flw 回復于:2004-04-05 12:57:26
    [quote:5938ba77a8="whyglinux"]不同意上述結論。在 C++ 中可以使用變量來定義數組。如下面的數組定義是合法的。[/quote:5938ba77a8]
    不行吧?

     HonestQiao 回復于:2004-04-05 13:15:26
    c99可以阿

     odin_free 回復于:2004-04-07 09:27:42
    [quote:d68f53f6db="HonestQiao"]c99可以阿[/quote:d68f53f6db]

    對了 這才是最關鍵的地方 不是c++和c的區別
    只要支持c99就可以

    以前大家說的ansi c 多數都是c89

     stevens_wu 回復于:2004-04-07 09:33:30
    [quote:7e26e974f7="HonestQiao"]c99可以阿[/quote:7e26e974f7]
    編譯的時候加上選項就可以了
    #gcc --std=c99 test.c

     ___ 回復于:2004-07-17 17:45:38
    int array[4];
    ...
    ...

    array[]={1,2,3,4};//為何非法?!

    難道一定要這樣一次性初始化嗎?
    e.g:  int array[4]={1,2,3,4};

     lrh3025 回復于:2004-11-12 22:35:39
    C中是變量聲明,C++中是定義,編譯器的實現機理是不一樣的

     assiss 回復于:2004-11-13 23:18:03
    [quote:6c82bf9fb7="___"]3,4};[/quote:6c82bf9fb7]


    對,{}賦值只能出現在初始化的時候.

     assiss 回復于:2004-11-13 23:21:54
    [quote:b2258d00db="vaaub"]我寫c程序,發現好像必須得把變量聲明在函數的首部,不能在語句中來聲明一個變量。是這樣嗎?[/quote:b2258d00db]

    除了很古老的tc2.0,
    別的編譯器一般都支持在任何地方聲明變量吧?

    當然在函數首部聲明變量是一個好習慣..
    準確的說,是在"{}"語句塊中"{"出現的下一行聲明變量,是一個好習慣.

     flw 回復于:2004-11-14 13:16:59
    [quote:d53b26f9e8="assiss"]除了很古老的tc2.0,
    別的編譯器一般都支持在任何地方聲明變量吧?[/quote:d53b26f9e8]
    你說的非常不對。
    只有支持 C99  的編譯器才能這么做。
    [quote:d53b26f9e8="assiss"]當然在函數首部聲明變量是一個好習慣..
    準確的說,是在"{}"語句塊中"{"出現的下一行聲明變量,是一個好習慣.[/quote:d53b26f9e8]
    這種語法 TC2 也支持的。

     assiss 回復于:2004-11-14 15:48:55
    是嗎?這我倒不是很清楚了.
    自TC2.0之后,再沒接觸過C89標準的純C編譯器了.
    tc++3.0就支持在任何地方聲明變量.不知道這是不是因為它把C當成C++來編譯了.
    VC6.0也可以在任何地方聲明變量.可能它也是把C文件當成C++來編譯了吧......
    當年對IDE太過依賴了,結果根本不記得它們的實質了......
    偏偏現在GCC支持絕大部分C99標準了,呵呵.也無法驗證了....

    也許是我把C和C++搞混了......

     flw 回復于:2004-11-14 20:34:37
    [quote:5b36ea976d="assiss"]是嗎?這我倒不是很清楚了.
    自TC2.0之后,再沒接觸過C89標準的純C編譯器了.
    tc++3.0就支持在任何地方聲明變量.不知道這是不是因為它把C當成C++來編譯了.
    VC6.0也可以在任何地方聲明變量.可能它也是把C文件當成C++來..........[/quote:5b36ea976d]
    對頭!
     8)  8)  8)  8)  8)

     Moon_GF 回復于:2004-12-26 20:01:53
    [quote:ac3112df48="___"]3,4};[/quote:ac3112df48]

    這可能是內存分配問題吧,
    數組初始化時有分配內存,

    原文轉自:http://www.kjueaiud.com

    評論列表(網友評論僅供網友表達個人看法,并不表明本站同意其觀點或證實其描述)
    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>