首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++数组赋值有关问题

2012-12-29 
C++数组赋值问题程序运行结果不对,就调试看下变量,发现数组赋值出现了这样的现象:在式子r1[1]r[1]-1r[1]

C++数组赋值问题
C++数组赋值有关问题C++数组赋值有关问题
程序运行结果不对,就调试看下变量,发现数组赋值出现了这样的现象:在式子r1[1]=r[1]-1;r[1]在变量中看为0,但r1[1]不是-1;即使是r2[1]=r[1];r[1]=0时r2[1]也不是0.不知道这样的赋值哪里错了,大家帮看下吧。。下面是个子函数,在主程序总将r输入的,r是指向一个一维数组的指针,一维数组有两个元素。
int *vmode9(char *p1,char *p2,int *r)
{   
int r1[2],r2[2],r3[2],r4[2],r6[2],r7[2],r8[2],r9[2];
r1[0]=r[0]-1;
r1[1]=r[1]-1;
r2[0]=r[0]-1;
r2[1]=r[1];
r3[0]=r[0]-1;
r3[1]=r[1]+1;
r4[0]=r[0];
r4[1]=r[1]-1;
r6[0]=r[0];
r6[1]=r[1]+1;
r7[0]=r[0]+1;
r7[1]=r[1]-1;
r8[0]=r[0]+1;
r8[1]=r[1];
r9[0]=r[0]+1;
r9[1]=r[1]+1;
int sad1=sad(r,p2,r1,p1);
int sad2=sad(r,p2,r2,p1);
int sad3=sad(r,p2,r3,p1);
int sad4=sad(r,p2,r4,p1);
int sad5=sad(r,p2,r,p1);
int sad6=sad(r,p2,r6,p1);
int sad7=sad(r,p2,r7,p1);
int sad8=sad(r,p2,r8,p1);
int sad9=sad(r,p2,r9,p1);
int *g;
int sadmin=sad5;
int sads[9];
sads[0]=sad1;
sads[1]=sad2;
sads[2]=sad3;
sads[3]=sad4;
sads[4]=sad5;
sads[5]=sad6;
sads[6]=sad7;
sads[7]=sad8;
sads[8]=sad9;
for(int i=0;i<9;i++)
{
if (sads[i]<sadmin)
sadmin=sads[i];
}

if(sadmin==sad1)
{
int r10[2],r11[2];
    r10[0]=r[0]-1;
    r10[1]=r[1]-2;
    r11[0]=r[0]-2;
     r11[1]=r[1]-1;
int sad10=sad(r,p2,r10,p1);
    int sad11=sad(r,p2,r11,p1);
if(sad10<sad11)
g=vmodelin(r,p2,r10,p1);
else
g=vmodelin(r,p2,r11,p1);
}

else if(sadmin==sad2)
{
int r12[2],r13[2];
    r12[0]=r[0]-2;
     r13[0]=r[0]-3;
    r12[1]=r13[1]=r[1];
int sad12=sad(r,p2,r12,p1);
int sad13=sad(r,p2,r13,p1);
if(sad12<sad13)
g=vmodelin(r,p2,r12,p1);
else
g=vmodelin(r,p2,r13,p1);
}


else if(sadmin==sad3)
{
int r14[2],r15[2];
    r14[0]=r[0]-1;
    r14[1]=r[1]+1;
     r15[0]=r[0]-2;
     r15[1]=r[1]+1;
int sad14=sad(r,p2,r14,p1);
int sad15=sad(r,p2,r15,p1);
if(sad14<sad15)
g=vmodelin(r,p2,r14,p1);
else
g=vmodelin(r,p2,r15,p1);
}
   else if(sadmin==sad4)
   {
   int r16[2],r17[2];
   r16[0]=r17[0]=r[0];
   r16[1]=r[1]-2;
   r17[1]=r[1]-3;
int sad16=sad(r,p2,r16,p1);
int sad17=sad(r,p2,r17,p1);
if(sad16<sad17)
g=vmodelin(r,p2,r16,p1);
else
g=vmodelin(r,p2,r17,p1);
}
else if (sadmin==sad5)
g= vxy(r,r);
else if (sadmin==sad6)
{
int r18[2],r19[2];
r18[0]=r19[0]=r[0];
r18[1]=r[1]+2;
r19[1]=r[1]+3;
int sad18=sad(r,p2,r18,p1);
int sad19=sad(r,p2,r19,p1);
if(sad18<sad19)
g=vmodelin(r,p2,r18,p1);
else
g=vmodelin(r,p2,r19,p1);
}
else if(sadmin==sad7)
{
int r20[2],r21[2];
r20[0]=r[0]+1;
r20[1]=r[1]-2;
r21[0]=r[0]+2;
r21[1]=r[1]-1;
int sad20=sad(r,p2,r20,p1);
int sad21=sad(r,p2,r21,p1);
if(sad20<sad21)
g=vmodelin(r,p2,r20,p1);
else
g=vmodelin(r,p2,r21,p1);


}
else if(sadmin==sad8)
{
int r22[2],r23[2];
r22[0]=r[0]+2;
r23[0]=r[0]+3;
r22[1]=r23[1]=r[1];
int sad22=sad(r,p2,r22,p1);
int sad23=sad(r,p2,r23,p1);
if(sad22<sad23)
g=vmodelin(r,p2,r22,p1);
else
g=vmodelin(r,p2,r23,p1);
}
if (sadmin==sad9)
{
int r24[2],r25[2];
r24[0]=r[0]+1;
r24[1]=r[1]+2;
r25[0]=r[0]+2;
r25[1]=r[1]+1;
int sad24=sad(r,p2,r24,p1);
int sad25=sad(r,p2,r25,p1);
if(sad24<sad25)
g=vmodelin(r,p2,r24,p1);
else
g=vmodelin(r,p2,r25,p1);
}
return g;
}


[解决办法]
额 确定两个数组元素的类型是否一致。
[解决办法]
请执行了相应的语句后再观察值

r1[1]=r[1]-1;
 r2[0]=r[0]-1;//运行到这句,r1[1]的值应为-1

热点排行