注册 登录
编程论坛 VC++/MFC

这两个赋值有什么不同吗?

gpp6025 发布于 2011-01-23 08:53, 898 次点击
自定义一个结构体的数据类型
然后在引用的时候用的指针的变量但是在初始化的时候出问题了
datatype *PD;
PD=NULL;
上面的是在VS2010里面编译可以过但是运行的时候出问题每个自定义的结构体里面的元素都是:0XCC0030错误,不可计算表达式的值
然后改成下面的赋值:
PD=(struct datatype *)malloc(sizeof(datatype));就可以过了
第一个赋值的方式是是直接给指针赋个空值,
第二个赋值直接开辟个内存空间给指针赋值,
但是为什么在有些编译器下第一个也是可以的啊?
还有两个赋值方式的不同是不是第一个没有开辟实际的物理内存而并不占内存只是个表现形式啊??
4 回复
#2
yuccn2011-01-24 09:31
datatype *PD;
PD=NULL;
这样 还没有开辟内存空间给PD的,它只是一个指向一个空的指针
datatype *PD;
PD= new datatype;

或者datatype *PD = new datatype,就行了


#3
qq10235692232011-01-24 16:14
我用第二种,第一个没有见过。
#4
秀痘魔导士2011-01-24 16:20
datatype *PD;
PD=NULL;

然后使用PD指针,在什么编译器下不报错?
#5
gpp60252011-03-25 23:01
回复 4楼 秀痘魔导士
在那个WDK下的x86 checked build Enviroment 里面那些UNICODE_STRING 还有那些 DRIVER_OBJECT 之类的结构指针不就是直接赋空值么,
就应为那些指针在使用的时候系统启动的时候就已经开辟好了这些空间,而自己写的还没所以在用的时候要开辟,之后才可以PD=NULL;这样赋值吗?
1