2016-04-05 10 views
1

A ve b dizileri iyi, c çok fazla başlatıcı değeri söylüyor ve d her alana -858993460 atamaktadır. Herhangi bir yorum ve yardım takdir edilmektedir. Bu bir sınıf için bu yüzden lütfen durumu anlamak istiyorum! dizisi c arasındaBirkaç farklı çok boyutlu diziyi ayarlamaya çalışıyorum ve neden bu işe yaramadığını anlayamıyorum

int a[2][2] = { {1, 2}, {3, 4} }; 
int b[2][3] = { {9, 8}, {7, 6, 5} }; 
int c[3][2] = { { 4, 4, 4 },{ 7, 7 } }; 
int d[3][3] = { {1, 1, 1}, {1, 1, 1} }; 
+0

'int b [2] [3]' "3 inçlik 2 dizi" değil "1 inç 2 inç ve ardından 3 inçlik 1 dizi" anlamına gelir. Bunu anladıktan sonra neyin yanlış olduğunu görebilmelisin. Çok boyutlu diziler farklı boyutlardaki dizileri tutamazlar, eğer aynı kapsayıcıda farklı boyutlara ihtiyacınız varsa, bir 'std :: vector >' ya da bir düz dizi ve manuel dizin hesaplaması kullanmanız gerekir. – user657267

cevap

1

elementler tip int[2] sahiptir. Böylece dizinin her elemanı en çok iki başlatıcı ile başlatılmalıdır.

yerine örneğin

int c[3][2] = { { 4, 4, 4 },{ 7, 7 } }; 
       ^^^^^^^^^^^ 

yazma

int c[3][2] = { { 4, 4 },{ 7, 7 } }; 
       ^^^^^^^^ 

Dizi d doğru başlatılır.

int d[3][3] = { {1, 1, 1}, {1, 1, 1} }; 

Onun başlatma dizi erişirken yanlış bir dizini kullanarak çünkü yanlış bir değer elde görünüyor aşağıdaki

int d[3][3] = 
{ 
    {1, 1, 1}, 
    {1, 1, 1}, 
    {0, 0, 0} 
}; 

eşdeğerdir.

İşte C++ ile yazılmış dizileri gösteren bir programdır.

#include <iostream> 

int main() 
{ 
    int a[2][2] = 
    { 
     { 1, 2 }, 
     { 3, 4 } 
    }; 
    int b[2][3] = 
    { 
     { 9, 8 }, 
     { 7, 6, 5 } 
    }; 
    int c[3][2] = 
    { 
     { 4, 4 }, 
     { 7, 7 } 
    }; 
    int d[3][3] = 
    { 
     { 1, 1, 1 }, 
     { 1, 1, 1 } 
    }; 

    for (const auto &row : a) 
    { 
     for (int x : row) std::cout << x << ' '; 
     std::cout << std::endl; 
    } 

    std::cout << std::endl; 

    for (const auto &row : b) 
    { 
     for (int x : row) std::cout << x << ' '; 
     std::cout << std::endl; 
    } 

    std::cout << std::endl; 

    for (const auto &row : c) 
    { 
     for (int x : row) std::cout << x << ' '; 
     std::cout << std::endl; 
    } 

    std::cout << std::endl; 

    for (const auto &row : d) 
    { 
     for (int x : row) std::cout << x << ' '; 
     std::cout << std::endl; 
    } 

    std::cout << std::endl; 
}  

program çıktı dolaylı sıfıra başlatıldı edildi açıkça başlatılmamış edildi dizilerin

1 2 
3 4 

9 8 0 
7 6 5 

4 4 
7 7 
0 0 

1 1 1 
1 1 1 
0 0 0 

Bileşenleri'dir.

+0

Cevabınız için çok çabuk teşekkür ederiz. Bu kesinlikle bana yardımcı oldu. Ne yaptığımı anlıyorum. Tekrar teşekkürler! – phillis

+0

@phillis Hiç hayır. Yeni başlayanlar birbirimize yardımcı olmalıyız. :) –

İlgili konular