小明的C++, Java, Bash编程

C++, Java, Bahs, STL, Design Pattern,

原创 一道非常简单的C语言指针题目,能做对吗?收藏

新一篇: [5] Netiquette when posting to comp.lang.c++ | 旧一篇: [26] Built-in / intrinsic / primitive data types

#include <stdio.h>

int main()
{
  int* p = (int*)1000;
  int* q = (int*)2000;
  printf("%d", p - q);
  return 0;
}

结果输出为什么?如果能答对,说明你C的指针基本学到位了。
答案请后住看。有不理解的可以回复交流。














































































































-250

发表于 @ 2007年05月31日 23:01:00|评论(loading...)|编辑

新一篇: [5] Netiquette when posting to comp.lang.c++ | 旧一篇: [26] Built-in / intrinsic / primitive data types

评论

#weskercn 发表于2007-06-01 10:55:45  IP: 222.92.92.*
BZ,请问p - q为什么得出来的结果是0x3fffff06呢?我在VC里debug发现的,多谢指教
#adige2345 发表于2007-06-01 11:32:30  IP: 210.41.8.*
楼主解释一下
#fz_zhou 发表于2007-06-01 13:58:08  IP: 61.152.238.*
我在WinXP下,用 VC6, VC2003, VC2005 试过都是 -250.

为什么是 -250, 如果用另外的方式来说明.
int* p = new int[250]; //这里分配了 1000个字节的空间
q = p + 250; // q 指向的是最后一个int
int nDiff = (int)p - (int)q;
//此时nDiff 应该是1000, 因为在地址空间上差 1000

由 q = p +250 很容易得出 -250 = p - q
由于得出 p - q = 250
#weskercn 发表于2007-06-04 09:58:30  IP: 222.92.92.*
恩,多谢博主精彩的解答!
#luodongshui 发表于2007-06-04 22:16:42  IP: 220.175.102.*
这与机器有关,即 int 类型的大小有关。
楼主的答案: int ---> four bytes.
#luodongshui 发表于2007-06-04 22:19:04  IP: 220.175.102.*
还有,还与编译器有关。
呵呵,ANSI 没有规定各类型的大小,只是规定了各类型大小的关系。
#fz_zhou 发表于2007-06-05 09:17:00  IP: 61.152.238.*
谢谢 luodongshui 的回答,我还真无视了这个问题,多谢了。
发表评论  


登录
Csdn Blog version 3.1a
Copyright © 小明