1樓:豬頭或火寶寶
你好!!!
首先我們要知道編譯器會在編譯時期判斷陣列的大小,要是沒有指出大小就會報錯。
宣告陣列的時候(沒有初始化),就一定要指出陣列的大小。就像你說的那麼樣:
int a[n];
scanf("%d",&n);
這樣是錯誤的,錯誤的原因就是,在編譯時期編譯器是不知道陣列的大小,只有你輸入的時候,n才有值,但是這已經到了執行時期,所以編譯其就會報錯。
要想解決問題可以用 malloc函式動態開闢空間,然後再釋放空間。
2樓:匿名使用者
定義陣列必須指定大小。
變大小的陣列一般用 new
long * p = new long [n];
...delete p;
3樓:匿名使用者
當然會出錯! 因為c語言中定義陣列時,陣列中表示元素的個數,應該是常量表示式,並且必須有一個確切的值。
如果你確實想定義的陣列中元素的個數不定(根據自己輸入的n的值決定的話),可以這麼做:
int n,*a;
scanf("%d",&n);
a=(int *)malloc(n*sizeof(int));
通過這種處理,下面在使用時,可以將a當成陣列使用。
有些關於C語言的問題,C語言報錯的問題?
1 以下選項中屬於c語言的資料型別是 a.複合型 b.雙精度型 c.邏輯型 d.集合型 b正確2 以下說法中正確的是 a.c語言程式總是從第一個的函式開始執行 b.在c語言程式中,要呼叫的函式必須在main 函式中定義 c.c語言程式總是從main 函式開始執行 d.c語言程式中的main 函式必須...
C語言程式設計中幾個很基礎的問題,求大神幫忙解答,感激不盡
af1 2為1除2的餘數為1 int m 10 11.0 0 10 11.0應該為小數 然後轉換成了int型為小數的整數部分及0 m 8 此時10 8為假則為0 2 3為0 兩int型相除 結果用int儲存 m m為0 因為自身與自身的反做交的話肯定是0 f m m m 11 此中的為二進位制計算 ...
關於C語言的問題,求教,一個關於C語言的問題,求教!!
冰雨vs冰霜 a b 是賦值 a b 是等號 這是新手長犯錯誤 c語言中經常犯的毛病!初學者必看!c 語言的最大特點是 功能強 使用方便靈活。c編譯的程式對語法檢查並不象其它高階語言那麼嚴格,這就給程式設計人員留下 靈活的餘地 但還是由於這個靈活給程式的除錯帶來了許多不便,尤其對初學c語言的人來說,...