2014-12-05 142 views
-2

進出口試圖被包含在另一個內部結構 EG(Struct1.StructArray [])結構的數組Ç傳遞一個結構,它包含一個結構陣列

的代碼如下所示:

struct bullet{ 
    int x; 
    int y; 
    int exist; 
    int type; 
}; 

struct tank{ 
    int x; 
    int alive; 
    int shotsfired; 
    struct bullet shots[50]; 
}; 

我試圖通過剛纔的結構[]結構作爲指針,以下功能。

int get_alien_collision(struct bullet *bulletStruct) 

用來傳遞結構的代碼行如下。

a = get_alien_collision(&player.shots[i]) 

我無法然而訪問拍攝[I]的函數內的任何數據(I通過嘗試的「bulletStruct-> x」的值輸出到屏幕的第一20證實了這一點,並他們都是0,即使它在main())

我完整的代碼(在引擎收錄)的結構爲Main.ccalculations.c其令人難以置信的混亂和可能充斥着大量的不良做法打印精細,因爲這是我第一次編碼(我相信是C)

+0

...什麼你 「相信是C」 的功能?你不確定你正在編程什麼語言?另外,請嘗試在您的問題中添加[MCVE](http://stackoverflow.com/help/mcve)。對於完整的代碼清單,Pastebins是很好的,但是您應該在實際問題中包含代碼的相關部分。 – skrrgwasme 2014-12-05 21:21:40

+0

它很難找出我需要重寫代碼,因爲我不確定標準文本輸出或調試輸出的c。因爲我正在爲沒有標準調試輸出的3ds編碼。我正在嘗試編寫一個更簡化版的問題即時通訊,儘管如此,它仍然執行相同的操作。 – 2014-12-05 21:31:16

+0

我在問題的代碼片段中看不到明顯的問題,正如您所說,完整的程序有點複雜。請嘗試進一步煮沸。很可能你會一路遇到解決方案。 – hobbs 2014-12-05 21:31:28

回答

0

如果你想更明確你可以使用parens,或者你可以確保你是p通過定義像中間體assing正確的事情:

struct bullet currentBullet=player.shots[i]; 
struct bullet *bp=&currentBullet; 
get_alien_collision(bp); 
0

你該結構的傳球看起來很好,但在你的函數你分配給bulletStruct而不是測試等價。

if ((bulletStruct->x = alienPPositionx + x)&&(bulletStruct->y = alienPPositiony + y)) 

或許應該讀

趕上這個
if ((bulletStruct->x == alienPPositionx + x)&&(bulletStruct->y == alienPPositiony + y)) 

一種方法是用聲明常量參數

void function (struct bullet const* bulletStruct)...