关于++的问题
char* aa=(char*)malloc(2); *aa++=33; 结果是,先给*a赋33,然后再++。下面是汇编代码: 56: *aa++=33; 00401035 mov eax,dword ptr [ebp-4] 00401038 mov byte ptr [eax],21h 0040103B mov ecx,dword ptr [ebp-4] 0040103E add ecx,1 00401041 mov dword ptr [ebp-4],ecx [ebp-4]是给局部量分配空间。21h无疑是33啦。 另有坑爹问题一个: 函数声明是void (*intra_satd_x3_8x8c) ( uint8_t *fenc, uint8_t *fdec , int res[3] ); 而 int satdu[4], satdv[4]; h->pixf.intra_satd_x3_8x8c( p_srcc[0], p_dstc[0], satdu );//计算satd 回去查书,才发现传递数组时,形参的数组大小是不检查的,爱多少多少,只是传个地址而已。 另有: h->fref0[h->i_ref0++] = h->frames.reference[i]; 这句,实际上是先执行h->fref0[h->i_ref0]= h->frames.reference[i],这后再h->i