0

配列を関数に渡そうとしていますが、受け取った値は配列の最初の値だけです。私は何を間違っていますか?操作に関係する 3 つの関数を次に示します。

void computeCScode (int temp1, int temp2, int code[])
{
    if((temp1<100)&&(temp2<100)) 
{
    code[0]=1;
    code[1]=0;
    code[2]=1;
    code[3]=0;
}
else if((temp1<100)&&(temp2>=100&&temp2<=400))
{
    code[0]=1;
    code[1]=0;
    code[2]=0;
    code[3]=0;
}
...
 }

 void invert(int x1, int y1, int x2, int y2, int firstCode[], int secondCode[])
   {
     int ok=1;
int *temp;
temp=(int*)malloc(sizeof(firstCode));
int aux;
if(firstCode==0000) ok=1;
else ok=0;
...

}

void cs(HDC hdc, int x1, int y1, int x2, int y2)
{
int firstCode[4];
int secondCode[4];
FINISHED = FALSE;
DISPLAY=FALSE;
REJECTED=FALSE;
do
{
    computeCScode(x1,y1,firstCode);
    computeCScode(x2,y2,secondCode);
    ...
            invert(x1,y1,x2,y2,firstCode,secondCode);
    }while(!FINISHED);
}

computeCScode の後、firstCode と secondCode は問題ありません。しかし、それらを逆に渡すと、関数内では関数の最初の値のみが使用されます。私は何を忘れましたか?

4

1 に答える 1

1

のこの部分はinvert、あなたが思っていることをしません:

temp=firstCode;
firstCode=secondCode;
secondCode=temp;

配列の内容を本当に交換したい場合は、memcpyまたはforループを使用します。

for (i = 0; i < 4; ++i)
{
    int temp = firstCode[i];
    firstCode[i] = secondCode[i];
    secondCode[i] = temp;
}
于 2012-05-14T20:19:44.613 に答える