关于++的问题

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_ref0++,原理同上
posted @ 2013-02-24 13:25  yurius  阅读(162)  评论(0)    收藏  举报