A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 侯金龙 于 2014-5-4 14:44 编辑

这个和编译平台是不是有关,32位和64位的是不是也不一样,谁能给个详解

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

4 个回复

倒序浏览
NULL是宏定义,实际就是0吧
回复 使用道具 举报
本帖最后由 执着的土豆 于 2014-4-28 23:06 编辑

这个好像不同的语言中,会有所不同。我刚才又查了一下,仅供参考:
c里面可以直接赋值0,32位。64位倒是没区别,都一样,因为指针里面存放的就是个内存地址。c里面给0,oc老师视频中讲是null。   null 通常用来表示 一个不指向任何对象的指针,其实就是0(其类型可以是int,也可以是long)。c语言中的null通常定义为(void *)0。
在有些语言中不正确,例如C++中,null的类型必须是个整数类型,否则无法将null赋给一个指针,因为c++并没有定义从void *到任何其他类型的自动转型操作。

评分

参与人数 1技术分 +1 收起 理由
脸皮猴 + 1

查看全部评分

回复 使用道具 举报
本帖最后由 peku 于 2014-4-29 08:24 编辑

定义*p=地址值(是个整数值)
首先你对指针的理解有偏差,将p赋值为0或者NULL其实并不是将p指向0这个数字或者NULL,我们知道内存地址都是通过整数来表示的,这里就相当于ASCll码的原理(比如我们赋值char c=56,我们可以通过这个数字表示的字符来打印这个字符),利用了数字的表示特性,当给p赋一个整数时,变量p里面存放的就是一个整数值,然后我们将这个整数值对应于一个地址去找这个地址上对应的值。比如*p=1111,当利用指针索取其指向的值时,计算机就会去找这个1111的地址,然后取出这个地址上的值。那么这里将指针赋值为0或者NULL时,这个地址上是没有存放任何数据的(系统规定),所以就表示不指向任何值。
回复 使用道具 举报
gaoxinglei123 来自手机 中级黑马 2014-4-29 10:32:46
报纸
c语言中都一样的把
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马