我是C的初學者,當我試圖做一個簡單的蛇遊戲時,我偶然發現了在另一個函數中使用指針時值更改的問題。我用指針爲了增長我的蛇,我用了3個。當然,這對蛇遊戲來說可能是一個非常不錯的算法,但是我覺得我已經快到了,但是我不知道哪裏出了問題。我已經使用了三個蛇本身,蛇的每個部分的x座標以及y。我可能只是發佈我的代碼的一部分。如何修復C中的不良指針
#include<stdio.h>
#include<dos.h>
#include<conio.h>
printer(int *forgoodness,int *y,char *lang,int tx,int ty, int *x)
{
int h=*forgoodness-1,g=0;
值在這裏變化,不知何故x複製y的6個值。
/* for(;g<15;g++)
{
printf("%i",x[g]);
}*/
for(;h>=0;h--)
{
gotoxy(x[h],y[h]);
printf("%c",lang[h]);
}
gotoxy(tx,ty);
printf(" ");
}
main()
{
int transferx=1,x=1,transfery=1,ch,game=0,dir;
int *transx, *transy, *numel;
int tempsx,g=0,tempsy,forex,j=0,*totalel;
char *snake;
int *snakey, *snakex;
如果我明確指定它運作良好值,但採用這種我可以不增加我的蛇:
//int snakex[15]={26,27,28,29,30,31,32,33,34,35,36,37,38,39,40};
//int snakey[15]={13,13,13,13,13,13,13,13,13,13,13,13,13,13,13};
clrscr();
*totalel=0;
*numel=14;
forex=26;
snake= "***************";
這是我做的,我的功能打印機的運行和值之前檢查值很好。
for(;j<15;j++)
{
snakey[j]=13;
snakex[j]=forex;
*totalel=j;
forex++;
}
printer(numel,snakey,snake,transferx,transfery,snakex);
我希望你能幫助我解決這個問題。乾杯。
在初始化數組之前是否j = 0?你能給我們你的整個代碼嗎? –
嗨,這基本上是代碼,其餘的只是使用箭頭鍵移動。是的,j = 0是我數組的第一個索引。 – buzzcarla
你需要在'for'循環開始處初始化'j',就像'for(j = 0; j <15; j ++)'(這是@LidongGuo試圖告訴你的)。 –