|
发表于 2006-8-9 22:23:25
|
显示全部楼层
means- __u16 *temp = (__u16*)dest32;
- temp++;
- dest32 = temp;
复制代码 andmeans- __u16 *temp = (__u16*)dest32;
- temp += sizeof(__u32) / sizeof(__u16); /* maybe 2 */
- dest32 = temp;
复制代码 指针是一种特殊的数据类型, 它的取值是有一定限制的, 比如一个32位类型的指针其最低2位应该为零,也就是说它应该是4的倍数. 那么对这种指针执行++操作会怎样呢?- #include <stdio.h>
- int main()
- {
- int x;
- int * p = &x;
- printf("p = %X\n", p);
- printf("++p = %X\n", ++p);
- return 0;
- }
复制代码 运行结果- rf@RemoteFish:~/shm$ ./a.out
- p = BFDCE74C
- ++p = BFDCE750
复制代码 这样说楼主大概就能明白自己的问题出在哪里了吧. 不过, 也许特定的编译参数可以解决这种问题.
我的剖析完全为自己的想法, 并没有严格的理论凭证, 欢迎各位仁兄指出在下的错误 |
|