[問題] C++的一些問題

看板C_and_CPP (C/C++)作者 (wei)時間16年前 (2010/02/23 18:23), 編輯推噓5(506)
留言11則, 7人參與, 最新討論串1/1
請問大家兩個有關於c++的問題 第一就是問題程式如下: void p(int a){ int tri[a][a]; ... ... ... } int main(){ int n; cin>>n; p(n); } 即當使用者輸入一個整數n,然後再呼叫function p(n), 當呼叫function p時,是否就會宣告一個大小為n*n的二維矩陣呢? 第二個問題程式碼如下 int main(){ int n, *p; cin>>n; p=new int [n]; ... ... ... } 這是動態配置一個大小為n的一維陣列, 請問我是否可把程式碼改成如下呢? int main(){ int n; cin>>n; int p[n]; ... ... ... } 謝謝!! -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.243.66

02/23 18:31, , 1F
1. 否 2. 否
02/23 18:31, 1F

02/23 18:56, , 2F
聽說C++不像新的C標準有支持VLA, 所以答案同樓上@_@"
02/23 18:56, 2F

02/23 19:30, , 3F
是因為宣告陣列,其大小不能放變數嗎?
02/23 19:30, 3F

02/23 19:43, , 4F
想請問為什麼第一題為否?呼叫p(n)後,第一行不就是執行
02/23 19:43, 4F

02/23 19:44, , 5F
int tri[n][n],這樣沒有宣告一個n*n的二維陣列嗎?
02/23 19:44, 5F

02/23 20:17, , 6F
在不支援VLA的情況, int tri[n][n]裡的n必須是個編譯時
02/23 20:17, 6F

02/23 20:18, , 7F
期常數, 這樣n是執行時期才會知道n是什麼....
02/23 20:18, 7F

02/23 20:19, , 8F
^^^^ 改成"這個例子裡", 不然斷句有點怪XD
02/23 20:19, 8F

02/23 21:20, , 9F
所以在第一題也需改成動態記憶體配置嗎?
02/23 21:20, 9F

02/23 21:29, , 10F
除非n用#define或enum{}宣告, 否則就一定要用動態配置
02/23 21:29, 10F

02/23 22:25, , 11F
樓上: const 也行吧
02/23 22:25, 11F
文章代碼(AID): #1BWwoZDF (C_and_CPP)
文章代碼(AID): #1BWwoZDF (C_and_CPP)