2014-01-10 48 views
0
for (x=1;x<4;x++) 
    { 
      for (y=1;y<5;y++) 
      { 
        if (x==1) 
        { 
          feld[1][y] = y; 
          printf("Feld gespeichert: %d",&feld[1][y]);    
        } 
        else 
        { 
          feld[x][y] = 0; 
        } 
      } 

    } 

輸出分配整數數組的結果是:在垃圾

Feld gespeichert: 915094680Feld gespeichert: 915094684Feld gespeichert: 915094688Feld gespeichert: 915094692S 

聲明:

int main(void) 
{ 
int x,y,groesse; 
int feld[4][5]; // Initialisierung Spielfeld und Schleifenvar 
(...) 

我似乎無法找出原因。 for循環將y遞增1,而不是1.321252151252151或任何其他值,而不管y是整數。爲什麼我會得到這些奇怪的值?

+0

當你想運行所有的數組元素時,你也應該從'x = 0'和'y = 0'開始。 – mb84

+0

用int feld [4] [5];'你不是初始化數組。 – zoska

回答

5

您正在打印地址,而不是值。

&

printf("Feld gespeichert: %d", feld[1][y]); 

此外,還要確保您啓用了所有的編譯器警告,您的代碼應該已經產生了至少一個警告(地址不與%d格式說明預計的int兼容)。

+0

這固定了輸出,非常感謝。奇怪的gcc的警告已啓用,但我沒有收到任何警告。 – user3182509

+1

@ user3182509如果解決了問題,您應該接受答案。 – zoska