qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1823回复:13

一个小问题

楼主#
更多 发布于:2005-01-14 16:57
有什么办法能让
int*pp=&p;
pp==NULL;成立?2000平台。
AllenZh
驱动老牛
驱动老牛
  • 注册日期2001-08-19
  • 最后登录2015-11-27
  • 粉丝19
  • 关注10
  • 积分1316分
  • 威望2387点
  • 贡献值7点
  • 好评度321点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2005-01-14 17:31
有什么办法能让
int*pp=&p;
pp==NULL;成立?2000平台。

什么意思
是要让 pp==NULL 成立吗?

这样就可以了
int  *pp = NULL ;

if(pp == NULL)
{
  肯定到这里
}
1,承接Windows下驱动/应用开发 2,本人原创虚拟鼠标/键盘,触摸屏,虚拟显卡,Mirror驱动,XP无盘的SCSI虚拟磁盘驱动等 3,windows下有尝技术服务(包括BUG调试,员工培训等) 欢迎深圳和海外企业联系.msn:mfczmh@sina.com
snowStart
驱动老牛
驱动老牛
  • 注册日期2004-04-06
  • 最后登录2011-06-02
  • 粉丝0
  • 关注0
  • 积分95分
  • 威望19点
  • 贡献值177点
  • 好评度1点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2005-01-14 18:34
有什么办法能让
int*pp=&p;
pp==NULL;成立?2000平台。


这一句int*pp=&p;
已经给pp赋值为某变量或指针的地址了,
以后pp指向的是地址不可能是空了,

除非进行pp = NULL;操作

要说*pp == NULL 倒有可能
学习,关注,交流中... [email=fengyu@163.com]Email:snowstarth@163.com[/email] [url]http://bbs.zndev.com/?a=snowStart[/url]
fslife
驱动大牛
驱动大牛
  • 注册日期2004-06-07
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分9分
  • 威望49点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地板#
发布于:2005-01-15 16:11
有什么办法能让
int*pp=&p;
pp==NULL;成立?2000平台。

如果p是一个变量,那应该不成立的。
在交流中学习。。。
qwdrv
驱动大牛
驱动大牛
  • 注册日期2004-03-19
  • 最后登录2005-12-15
  • 粉丝0
  • 关注0
  • 积分8分
  • 威望2点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2005-01-17 17:38
能不能去除0地址的保护来实现?
dongni386
驱动牛犊
驱动牛犊
  • 注册日期2005-01-15
  • 最后登录2013-07-31
  • 粉丝1
  • 关注0
  • 积分5分
  • 威望12点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2005-01-18 13:21
有什么办法能让
int*pp=&p;
pp==NULL;成立?2000平台。

你的意思是不是这样:
const int*pp=&p;
pp==NULL;成立?2000平台。

如果是,这要看int*pp=&p;是在哪里定义的。
如果是在一个函数里的话,编译器会为pp在堆栈上分配空间,而不是在只读存储区。
如果你能修改那块内存的话,pp的值就会改变。但是如果编译器
pp==NULL被编译成
mov eax,[ebp-?];分配给pp的地址
cmp eax, 0
那就可以了。
可如果编译成
mov eax, ?;p的地址
cmp 0
你就没办法了。因为编译器把pp当做常量引用,而不使用内存。


[编辑 -  1/18/05 by  dongni386]
wookay2003
驱动牛犊
驱动牛犊
  • 注册日期2003-07-05
  • 最后登录2005-02-21
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2005-01-19 20:50
直接定义pp=NULL不就行了吗?
KanHu
驱动大牛
驱动大牛
  • 注册日期2002-10-20
  • 最后登录2005-06-19
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2005-01-20 20:21
有什么办法能让
int*pp=&p;
pp==NULL;成立?2000平台。

没有办法把
虚心请教 [img] http://www.driverdevelop.com/forum/upload/lsn_061/2005-01-09_2005-01-06_titi.jpg[/img]
johnliu
驱动小牛
驱动小牛
  • 注册日期2004-08-06
  • 最后登录2005-03-06
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2005-01-20 22:46
[quote没有办法把 [/quote]
zhenlongyang
驱动小牛
驱动小牛
  • 注册日期2004-10-28
  • 最后登录2010-07-26
  • 粉丝1
  • 关注0
  • 积分729分
  • 威望100点
  • 贡献值0点
  • 好评度66点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2005-01-28 08:07
我理解楼主的意思:先将指针变量p初始化为一个已定义变量pp的地址,然后通过某种方法(不是直接改变p的值)将pp的地址改变为NULL。如果我没理解错的话,这是不可能的:即使用汇编语言也无法改变一个已定义变量的地址!我指的是动态的改变,如果想在定义时给它一个特定的地址还是有可能的,但显然不是楼主的意图。
zmwk
驱动中牛
驱动中牛
  • 注册日期2001-05-15
  • 最后登录2009-04-05
  • 粉丝0
  • 关注0
  • 积分59分
  • 威望51点
  • 贡献值0点
  • 好评度2点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2005-01-28 13:46
???
这是我到这以来,第一个看不懂的贴子。
楼主怎么没声音了呢?
A strong man can save himself. A great man can save another.
wowocock
VIP专家组
VIP专家组
  • 注册日期2002-04-08
  • 最后登录2016-01-09
  • 粉丝16
  • 关注2
  • 积分601分
  • 威望1651点
  • 贡献值1点
  • 好评度1227点
  • 原创分1分
  • 专家分0分
11楼#
发布于:2005-01-28 16:17
目的是什么呢???
花开了,然后又会凋零,星星是璀璨的,可那光芒也会消失。在这样 一瞬间,人降生了,笑者,哭着,战斗,伤害,喜悦,悲伤憎恶,爱。一切都只是刹那间的邂逅,而最后都要归入死亡的永眠
xbzjackey
驱动小牛
驱动小牛
  • 注册日期2002-12-27
  • 最后登录2016-01-07
  • 粉丝0
  • 关注0
  • 积分5分
  • 威望34点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2005-03-09 15:35
不解
回答好的不要忘了给分哦。。。
bmyyyud
驱动老牛
驱动老牛
  • 注册日期2002-02-22
  • 最后登录2010-01-21
  • 粉丝0
  • 关注0
  • 积分1000分
  • 威望130点
  • 贡献值0点
  • 好评度106点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2005-03-09 16:26
滚滚长江东逝水 浪花淘尽英雄 是非成败转头空 青山依旧在 几度夕阳红 白发渔樵江渚上 惯看秋月春风 一壶浊酒喜相逢 古今多少事 尽付笑谈中
游客

返回顶部