论坛: 编程破解 标题: 我先把194化成十进制等于404是关于c的 复制本贴地址    
作者: lovejiang [lovejiang]    论坛用户   登录
#include<stdio.h>
main()
{int a[10]={1,2,3,4,5,6,7,8,9},*p;
p=a;
printf("%x\n",p);
printf("%x\n",p+9);
如果第一个printf语句输出值是194,则第二个printf语句输出的结果是1a6
可我做出的如果却不是这样的
我先把194化成十进制等于404
然后加9等于413
然后再化成十六进制
等于19d
可能是我做错了
请帮忙一下啊


[此贴被 lovejiang(lovejiang) 在 01月13日19时54分 编辑过]

地主 发表时间: 04-01-13 19:52

回复: 286 [unique]   版主   登录
请观注一下别的贴子,因为类似问题我已回答过.

首先:
1 int 在TC中是两个字节表示,VC是4个字节表示。
2 p是指向int类型的指针,因此p+9就不能相当然地认为是p的地址向后移9个,而是9*sizeof(int)个。

其次:
明白上面后,p+9就应该是0x194+9X2=0x1a6,或者是0x194+9X4=0x1b8
如果是前者说明你用的是TC,如果是后者说明你用的是VC。




B1层 发表时间: 04-01-14 09:23

回复: 286 [unique]   版主   登录
由此可见你用的是Turbo C2.0,对吧?

B2层 发表时间: 04-01-14 09:24

论坛: 编程破解

20CN网络安全小组版权所有
Copyright © 2000-2010 20CN Security Group. All Rights Reserved.
论坛程序编写:NetDemon

粤ICP备05087286号