2014-03-01 58 views
0

我正在嘗試做一些應該很簡單的事情。我正在創建一個只有1個元素的數組。這就是座標x y zC中的3D數組並打印其內容

所以我想到了Id爲1和3列組成的數組,1列爲x y和z。因爲這個數字將不斷更新,我不需要前一點的內存,所以它只是要不斷地重寫

所以在這裏我不需要再行是我的數組

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

這就是我想知道如果我建立它是正確的,並打印出值。

printf("%d %d %d\n", coordinates[1][1],coordinates[1][2],coordinates[1][3]); 
printf("\n"); 

我的想法,這將打印第1個1列,行1列2和第1分3列

什麼是錯在這裏我的想法?作爲我的結果,我沒有得到1 1 1。我得到了隨機數字。

我對C不太熟悉。這看起來微不足道,我開始把我的車輪旋轉太多。

編輯:我工作的事情過程(另見註釋)

「這是我想的第一件事就是回想起陣列101和索引爲n-1,因爲這似乎是我得到的隨機元素。內存地址超出數組邊界。仍然沒有工作,不幸的是我開始打我的頭撞牆了。「

我曾嘗試

printf("%d %d %d\n", coordinates[0][0],coordinates[0][1],coordinates[0][2]); 
printf("\n"); 

但我再次得到了隨機數

結論

好吧,我終於想通了,我在做什麼錯。你們都是對的。我正在尋找我的代碼錯誤的地方。感謝您的及時回覆。發生了什麼是我最初稱我的座標爲我的代碼中的一個浮點數。我沒有複製並在這裏過去,所以我在這裏稱它爲int。所以當我嘗試使用%d打印文件時,它試圖打印一個浮點數,導致結果混亂。我將%d切換到%f(我不知道printf是如何工作的,我猜),它工作!綠角錯誤,我很抱歉!再次感謝您的幫助!

回答

1

應當索引爲cordinates [0] [0],cordinates [0] [1],cordinates [0] [2],因爲數組索引通常從0開始
這裏cordinates [1] [3] ,意思是行大小是1,但它是用0索引的。相似的列從0到3索引0 to size-1

+0

這是我嘗試的第一件事。回想數組101和索引是n-1,因爲它好像是在數組邊界外的隨機存儲器地址中獲取元素。不幸的是,我仍然無法工作,開始毆打我的頭撞牆。 – CoffeePeddlerIntern

+0

@CoffeePeddlerIntern printf(「%d%d%d」,座標[0] [0],座標[0] [1],座標[0] [2]);應該工作正常。代碼很好。 – LearningC

2

請記住,C中的數組索引從0開始,此規則也適用於多維數組。

對於數組int coordinates[1][3],其元素爲coordinates[0][0],coordinates[0][1]coordinates[0][2]

1

它應該是這樣的

printf("%d %d %d\n", coordinates[0][0],coordinates[0][1],coordinates[0][2]); 

由於指數從零不是一個開始。