구조체를 생성하고 함수 포인터에 포인터를 전달한 다음 malloc()
을 호출하십시오. 그건 모두 잘 작동합니다. 그러나 메모리에 액세스하려고하면 프로그램이 정지됩니다. 다른 함수를 호출하고 메모리에 액세스를 변경하면 모든 것이 잘 작동합니다. TFeld의 definiton와구조체의 포인터 포인터를 수정하십시오.
void test(TFeld *Feld, TEinstellung E)
{
int i;
for (i=0;i<E.Groesse_X*E.Groesse_Y;i++)
{
Feld[i].Schiff_Vorhanden = false;
Feld[i].Schiff_Versunken = false;
Feld[i].Ueberprueft = false;
}
}
void initField (TEinstellung E, TFeld **Feld)
{
int i;
*Feld = (TFeld*)malloc(E.Groesse_X*E.Groesse_Y*sizeof(TFeld));
test(*Feld,E);
/* for (i=0;i<E.Groesse_X*E.Groesse_Y;i++)
{
Feld[i]->Schiff_Versunken = (bool*)false;
// (*Feld[i]).Schiff_Versunken = false;
//Feld[i]->Ueberprueft = false;
} */
}
은 : 테스트 기능이 작동 사용하는 동안 내가 주석
typedef struct TFeld
{
bool Schiff_Vorhanden = false;
bool Ueberprueft = false;
bool Schiff_Versunken = false;
} TFeld;
부분은 프로그램을 추락했다.
누군가 제게 그 행동을 설명해 주시겠습니까?
'Feld [i] ->'는 아마도 (* Feld) [i]를 의미했습니다. – immibis
'struct' typedef에서'TFeld '라는 이름을 생략 할 수 있습니다 '당신이 처음 가질 때. 에서,'typedef struct {...} TFeld; ' –
bool pointer ?! : D –