2014-12-05 99 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)...