|
![]() | 作者: 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号