2012-05-14 138 views
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後都OK。但是當它們通過反轉時,它們只能使用函數的第一個值。我忘了什麼?

+0

請減少您的示例,使其僅包含查看問題所需的代碼。你輸入的代碼太長了。 (通過這樣做,你也可以自己找到錯誤的原因。) – krlmlr

回答

1

invert這部分沒有做什麼你認爲它的作用:

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

如果你真的想交換陣列中的內容,然後使用memcpyfor循環,例如

for (i = 0; i < 4; ++i) 
{ 
    int temp = firstCode[i]; 
    firstCode[i] = secondCode[i]; 
    secondCode[i] = temp; 
} 
+0

我會改變這一點,謝謝。但是,這並不能解決我所遇到的問題 –