关于++的问题

孤街浪徒 提交于 2020-03-07 07:40:38
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++,原理同上
标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!