當我嘗試使用函數scanf爲動態數組賦值時,第一次分配後,我會收到此錯誤「Signal received:SIGSEGV(Segmentation fault)」,但是當我使用cin時,值正確分配。爲什麼?我的代碼中存在問題嗎?C++ scanf導致SIGSEGV
int main(int argc, char** argv) {
int r = 5;
short* pole[r];
for(int x = 0;x<r;x++){
pole[x] = new short[r];
for(int y = 0;y<r;y++){
scanf("%d",pole[x][y]); //error
//cin >> pole[x][y]; //OK
}
}
}
哦謝謝:x我認爲這不是必要的,因爲它是數組元素 – user1145902 2012-02-01 16:03:14
@ user1145902:像流版本這樣的C++用戶的原因是類型安全。編譯器會檢查您正在閱讀的內容的類型,並確保使用正確的代碼。使用格式說明符非常容易出錯(易碎)。如果你得到錯誤的類型(或者對象的類型被改變),代碼將很快破壞。 – 2012-02-01 17:56:10