当前位置: 代码迷 >> C语言 >> 求助 (short*)NULL + 10 = ?
  详细解决方案

求助 (short*)NULL + 10 = ?

热度:978   发布时间:2007-10-19 13:53:47.0
求助 (short*)NULL + 10 = ?
(short*)NULL + 10 = ?
搜索更多相关的解决方案: short  NULL  

----------------解决方案--------------------------------------------------------

刚从CSDN看到,=10*sizeof(short)


----------------解决方案--------------------------------------------------------
能详细说明下不?可以发答案发: anifa_lover@163.com
----------------解决方案--------------------------------------------------------
是刚才你问的吧
是不是你?
刚才解答的不行吗?
----------------解决方案--------------------------------------------------------
以下是引用anifa在2007-10-19 18:19:58的发言:
能详细说明下不?可以发答案发: anifa_lover@163.com

1,NULL,一般来说,都是这么定义的,#define NULL 0,也就是说NULL就是0
2、(short*),这个是强制类型转换,结果就是把0转换成了一个指针,而且是short型的指针
3、指针的加法,比如这两句int *p;p++;我们都知道p的值实际上增加了sizeof(int),回到这道题,既然(short*)NULL是指针,那(short*)NULL+10就等于(short*)NULL+10*sizeof(short)
4、这样结果就出来了,NULL=0不用管了,那结果就是10*sizeof(short)

不得不说这道题出的很有意思
----------------解决方案--------------------------------------------------------

补一句
经过强制类型转换是不会改变原来的地址的.
NULL 是个指针,其地址就是0,被强制转换为short*,再移动10*(sizeof(short))个单位
所以得到的地址是20.


----------------解决方案--------------------------------------------------------

这道题出得很高明


----------------解决方案--------------------------------------------------------

6楼说的不太严密,
NULL本来不是指针,而是define定义的,属于编译预处理,编译的时候就会直接替换成0,这道题其实直接写(short*)0+10也是一样的。
NULL的地址在哪我不大清楚,应该不是0,不过NULL的值是0,被强制转换成指针后,他的值还是0(当然,他的地址也没变),指针的值也就是指针指向的地址

[此贴子已经被作者于2007-10-19 22:24:16编辑过]


----------------解决方案--------------------------------------------------------
NULL 等于 0,当把NULL赋值给指针变量时,这个指针就是指向了0地址,如果取他的内容,就是内存0地址中的值。

----------------解决方案--------------------------------------------------------
学习了...
----------------解决方案--------------------------------------------------------
  相关解决方案