[問題] 關於陣列初使話

看板C_and_CPP (C/C++)作者 (Jun)時間15年前 (2010/11/07 00:00), 編輯推噓0(0013)
留言13則, 2人參與, 最新討論串1/1
#include<stdio.h> #include<stdlib.h> int main() {int x=0; scanf("%d",&x); int F[x]={0}; F[0]=0;F[1]=1; for(int i=2;i<x;i++) { F[i]=F[i-1]+F[i-2]; printf("F[%d]=%d\n",i,F[i]); } system("pause"); } 我想問一下,我在Dev c++執行時F[x]={0}這行會出錯誤,之前好像有聽說不能在 陣列裡面的index放變數,但不知道為什麼?有人能幫我解釋嗎? 但我改成F[x]的話就可以執行了,是放變數的話不能初始化嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 219.70.220.119

11/07 00:02, , 1F
...你有看編譯器告訴你什麼問題嗎 ? 用 {} 初始化編譯
11/07 00:02, 1F

11/07 00:02, , 2F
器要知道你陣列有幾個元素, 他才好依序給值, 其餘的補
11/07 00:02, 2F

11/07 00:03, , 3F
預設值, VLA 的長度未知, 當然不能叫編譯器幫我們初始
11/07 00:03, 3F

11/07 00:03, , 4F
化, 別用這種怪招...
11/07 00:03, 4F

11/07 00:12, , 5F
11/07 00:12, 5F

11/07 00:12, , 6F
11/07 00:12, 6F

11/07 00:13, , 7F
因為你要印的陣列元素都會給他新值, 所以不必在前面給
11/07 00:13, 7F

11/07 00:13, , 8F
他初始值也沒關係
11/07 00:13, 8F

11/07 00:20, , 9F
不過搞清楚你現在是寫啥語言也是很重要, 你沒加 -std=
11/07 00:20, 9F

11/07 00:20, , 10F
c99 這個選項, for 迴圈 header 定義變數是不合法的,
11/07 00:20, 10F

11/07 00:21, , 11F
那個地方會過表示你現在寫的是 C++, 注意副檔名的差異
11/07 00:21, 11F

11/07 00:26, , 12F
感覺原PO喜歡創新語法,學習怎麼正確使用用比較重要吧
11/07 00:26, 12F

11/07 00:27, , 13F
很多東西等你慢慢理解記憶體就會了解了
11/07 00:27, 13F
文章代碼(AID): #1CrNkElZ (C_and_CPP)
文章代碼(AID): #1CrNkElZ (C_and_CPP)