ฉันสามารถเริ่มต้นอาร์เรย์หนึ่งมิติใน c โดยมีหรือไม่มีการเริ่มต้นขนาดของมัน:
int x[] = {1,2,3,4,5};
int y[5] = {1,2,3,4,5};
แต่เมื่อฉันพยายามทำเช่นเดียวกันกับอาเรย์สองมิติเช่น
int x[][] = {{1,2,3},
{4,5,6}};
ฉันได้รับ error: array type has incomplete element type
ข้อผิดพลาดเดียวกันนี้จะเกิดขึ้นหากฉันประกาศและเริ่มต้นอาร์เรย์ในบรรทัดที่ต่างกัน อย่างไรก็ตาม ฉันสามารถกำหนดค่าเริ่มต้นได้โดยระบุขนาด:
int x[2][3] = {{1,2,3},
{4,5,6}};
ไม่มีข้อผิดพลาดกับสิ่งนี้ คำถามของฉันคือ เป็นไปได้ไหมที่จะเริ่มต้นอาร์เรย์หลายมิติโดยไม่ต้องเตรียมข้อมูลเบื้องต้นขนาดของอาร์เรย์ก่อน ฉันถามสิ่งนี้เพราะสำหรับโปรเจ็กต์สุดท้าย ฉันจำเป็นต้องประกาศอาร์เรย์และเริ่มต้นได้ในภายหลัง และขนาดของอาร์เรย์จะไม่มีใครทราบเมื่อทำการคอมไพล์
int[x][y]
คุณจะไม่ทราบขนาดได้อย่างไร การเว้นขนาดว่างไว้เป็นเพียงความสะดวกในโค้ดบรรทัดแรก คอมไพลเลอร์จะนับตัวเริ่มต้นแทนที่จะให้คุณดำเนินการ แต่ก็ยังเป็นที่รู้จักในเวลารวบรวม - person Barmar   schedule 24.09.2017malloc()
- person Barmar   schedule 24.09.2017