----------------解决方案--------------------------------------------------------
刚从CSDN看到,=10*sizeof(short)
----------------解决方案--------------------------------------------------------
能详细说明下不?可以发答案发: anifa_lover@163.com
----------------解决方案--------------------------------------------------------
是刚才你问的吧
是不是你?
刚才解答的不行吗?
----------------解决方案--------------------------------------------------------
能详细说明下不?可以发答案发: 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地址中的值。
----------------解决方案--------------------------------------------------------
学习了...
----------------解决方案--------------------------------------------------------