C语言 int * p; p=NULL;
1.为什么不写p=0;?2.为什么有的人还要#defineNULL0;?3.有这个必要吗?(*p还是不能赋值)...
1.为什么不写p=0;?
2.为什么有的人还要#define NULL 0;?
3.有这个必要吗?(*p还是不能赋值) 展开
2.为什么有的人还要#define NULL 0;?
3.有这个必要吗?(*p还是不能赋值) 展开
6个回答
展开全部
1:0和NULL不一样,0可以只数字0,也可以指字符0,NULL指的是空。
2:p=NULL;这一句的意思就是令P指向空地址
3:如果最后不写p=NULL;的话就要释放p.像这样free(p);,不这么做的话就有可能出现指针乱跳转的危险
2:p=NULL;这一句的意思就是令P指向空地址
3:如果最后不写p=NULL;的话就要释放p.像这样free(p);,不这么做的话就有可能出现指针乱跳转的危险
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
关于无效值在不同的环境有不同的定义,大多是0,而有的是0xFFFFFFFF,
编译代码换了环境后而通过宏定义NULL,在利用NULL的代码中就不用再修改,而是直接修改宏定义
编译代码换了环境后而通过宏定义NULL,在利用NULL的代码中就不用再修改,而是直接修改宏定义
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这是指针啊,如果是直接将0赋值给p也可以直接写int p;p=0;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
1. 这是习惯写法。一般都把NULL定义成(void *)0,如果直接p=0;编译器会告警,说把一个整型赋给一个指针型。
2. NULL一般都用于表示空指针,p=NULL就表示把p指向一个无效空间地址
3. p指向NULL的无效空间地址后,对这个地址赋值就是非法的。只有把p指向一个有效地址空间才可以对它指向的内存写入内容,即可执行*p=XX操作。
2. NULL一般都用于表示空指针,p=NULL就表示把p指向一个无效空间地址
3. p指向NULL的无效空间地址后,对这个地址赋值就是非法的。只有把p指向一个有效地址空间才可以对它指向的内存写入内容,即可执行*p=XX操作。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询