why does array initialization in function other than main is temporary? [on hold]
- by shafeeq
This is the code in which i initialize array "turn[20]" in main as well as in function "checkCollisionOrFood()",the four values turn[0],turn[1],turn[2],turn[3] are initialized to zero in main function,rest are being intialized in "checkCollisionOrFood()".This is where fault starts.when i initialize turn[4]=0 in "checkCollisionOrFood()" and then access it anywhere,it remains 0 in any function,but! when i initialize next turn[] i.e turn[5],the value of turn[4] gets depleted .i.e turn[4] have garbage value.turn[20] is global variable,its index"head" is also global.I'm stuck.Plz help me get out of it.Ishall be highly obliged for this act of kindness.This is my excerpt of code
unsigned short checkCollisionOrFood(){
head=(head+1)%20;
if(turn[head-1]==0){
turn[head]=0;
/this is where turn[] is iniliazized and if i access turn[head] here i.e just after iniliazition then it gives correct value but if i access its previous value means turn[head-1]then it gives garbage value/
rowHead=(rowHead+1)%8;
if(!(address[colHead]&(1<<rowHead)))return 1;
else if((address[colHead]&(1<<rowHead))&&
(!((colHead==foody)&&(rowHead==foodx))))gameOver();
else return 0;
}
if(turn[head-1]==1){
turn[head]=1;
colHead=(colHead+1)%8;
if(!(address[colHead]&(1<<rowHead)))return 1;
else if((address[colHead]&(1<<rowHead))&&
(!((colHead==foody)&&(rowHead==foodx))))gameOver();
else return 0;
}
}
void main(void)
{
turn[0]=0;turn[1]=0;turn[2]=0;turn[3]=0;
/these values of turn[] are not changed irrespective of where they are accessed./
while (1)
{
if(checkCollisionOrFood())
{
PORTB=(address[colHead] |=1<<rowHead);
turnOffTail();
blink();
}
else
{
PORTB=address[colHead];
createFood();
blink();
}
}
}
Plz help me.