指针变量能直接赋值吗?
int*p;p=2000;这可以不?但我看到有的程序写#defineNULL0int*p;p=NULL;类似于这样是因为0地址特殊?...
int * p;
p=2000;
这可以不?
但我看到有的程序写
#define NULL 0
int * p;
p=NULL;
类似于这样
是因为0地址特殊? 展开
p=2000;
这可以不?
但我看到有的程序写
#define NULL 0
int * p;
p=NULL;
类似于这样
是因为0地址特殊? 展开
展开全部
p=NULL;是空指针 这个指针没有任何用 但是是最安全的
因为当一个指针不用以后 如果不把他指向0 他很可能与别的地址相同
那样就遭了 而指向0却不会出现这种问题
int * p;
p=2000;这种有可能通过编译 但是这是极其危险的做法 绝对不能这样做
指针只能赋予相应的指针值 或者是0空指针
因此只能表示为
int * p;int a;
p=&a;
或者
p=0;
因为当一个指针不用以后 如果不把他指向0 他很可能与别的地址相同
那样就遭了 而指向0却不会出现这种问题
int * p;
p=2000;这种有可能通过编译 但是这是极其危险的做法 绝对不能这样做
指针只能赋予相应的指针值 或者是0空指针
因此只能表示为
int * p;int a;
p=&a;
或者
p=0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
0地址特殊?否!这只是个习惯用法。
0 作为空值是有意义的,
因为通常变量的地址不会为0;
对intel86系列CPU来说这里是中断向量表,用户代码是不会改动它的。
其他系统只怕也会一样的,因为C最早并不是用于DOS,WIndows。
而是用来编写UNIX操作系统的;并随操作系统一起发布的。
早期的UNIX并不是在IntelCPU上实现的。
事实上0地址,是可以读取的。当然如今操作系统可能会保护这段内存。
用户态代码只怕不能读取了。
0 作为空值是有意义的,
因为通常变量的地址不会为0;
对intel86系列CPU来说这里是中断向量表,用户代码是不会改动它的。
其他系统只怕也会一样的,因为C最早并不是用于DOS,WIndows。
而是用来编写UNIX操作系统的;并随操作系统一起发布的。
早期的UNIX并不是在IntelCPU上实现的。
事实上0地址,是可以读取的。当然如今操作系统可能会保护这段内存。
用户态代码只怕不能读取了。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
不能 , NULL代表空地址,是指没有 不是0的意思;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
可以的。 在pc上你设置一个指针等于2000跟设置它等于0实际上是一样的
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询