
| 
 | 
|  | 作者: 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号