指针赋值为null(在c语言的指针使用中,NULL的值是)

本文目录
- 在c语言的指针使用中,NULL的值是
- 指针变量使用之后要赋值为NULL吗
- 如何将指针置为null
- 为什么有时要对指针比如说*p,赋值NULL呢有什么意义
- 再给指针变量(*p)赋空值(NULL)时,*p=NULL与p=NULL哪个正确原因
- 指针被赋值 NULL 之后,还可以再赋其他值吧
- C语言中main中指针赋值NULL的问题
- 结构体中的指针同时赋值NULL出错
在c语言的指针使用中,NULL的值是
C语言中NULL是个宏,在stddef.h中定义:
#ifndef NULL
#ifdef __cplusplus //如果是C++则为0
#define NULL 0
#else
#define NULL ((void *)0) //C中为((void *)0)
#endif
#endif
无论是哪个语言,从数值角度上来说,NULL就是0。作为指针类型变量,赋值为NULL时,表示该指针是个空指针。NULL常用来判断一个指针变量是否为空指针,从而确定程序下一步的操作。如,程序开始,定义一个指针变量并初始化为空,在程序过程中,有可能使用该变量,也可能未使用该变量,则在程序返回前,可以通过判断其是否为空指针,来进行内存释放(防止内存泄露)。
void func()
{
char *p=NULL;
....
if ( p != NULL ) //当p用malloc成功分配过内存时,其值是个非0值。
free(p);
}
指针变量使用之后要赋值为NULL吗
临时使用的指针,不用之后赋NULL是安全做法,也是好习惯,但不是一定。而且有的指针"用完"后是不能随意赋NULL的,而要按特定要求操作;一句话只能完全完成使命的指针才可以人为赋NULL。
如何将指针置为null
直接赋值为NULL,如double *p; p=NULL; 如果是动态数组,如int *p,m,n;p=new intp; p=NULL;
为什么有时要对指针比如说*p,赋值NULL呢有什么意义
C语言中的变量在使用前必须先定义并赋值,指针变量值在定义后也要先赋值才能使用。定义指针后,如果不对它赋值,指针的值就不确定,不能明确它指向的内存单元。因此,引用未赋值的指针,可能会出现难以预料的结果。为避免这种危害,在定义指针时,可先将它的初值置为空。如int *p=NULL。
再给指针变量(*p)赋空值(NULL)时,*p=NULL与p=NULL哪个正确原因
*p=NULL是将p指向的内存赋值为NUll,而p本身不会变。
p=NULL是改变了p本身的值,将它指向的地址改为NULL
满意请采纳!
指针被赋值 NULL 之后,还可以再赋其他值吧
能的,指针的地址跟它指向的地址是不一样的。
我们说的给指针用new赋值,其实是在内存上分配一块内存,然后将内存的首地址传给指针,指针的值就是内存的首地址。
delete也是将分配的内存收回,跟指针本身没有关系,指针本身没有任何改变。
当然,如果指针本身的值在delete前改变,会导致找不到分配的内存,而没有办法使用和释放内存。
int *pData = NULL;
...
pData = new int的内存首地址
pData = new int的地址再也找不回来的(没有保存),所以不要这样用。
....
delete pData; //pData值没变,但是它指向的内存被系统收回,如果它仍然来读写该出内存,可能导致错误。
pData = NULL; //防止误用,可以不用赋值NULL
...
pData = new int的首地址
C语言中main中指针赋值NULL的问题
请思考以下代码的运行结果
void fun(int a)
{
a = 1;
}
int main(int argc, char **argv)
{
int a = 0;
fun(a);
cout 《《 a 《《 endl;
return 0;
}
没错,输出0。
fun内部对a赋值并不能改变fun外部的变量a
你这里的问题也是同样道理。
结构体中的指针同时赋值NULL出错
int* p1=NULL;
是定义一个指针变量,指向NULL。
PATH* path;
path-》begin=NULL;
相当于 :
int* p1;
*p1 = 33333;
定义了一个指针,但是没有指向有效的内存(野指针),对指针进行写操作当然会出错。应该这样:
PATH path;
PATH *p = &path
p-》begin=NULL;
p-》end=NULL;

更多文章:
phonegap框架(phonegap框架在xcode开发金融的项目 原生的好还是phonegap框架好为啥)
2026年2月28日 15:30
vlookup函数回车后还是公式(为什么用vlookup输入公式后,打出来的仍然是公式呢)
2026年1月10日 16:00
left join 和join(请教JOIN LEFT JOIN ALL JOIN 等的区别和联系)
2025年8月7日 17:45
stimulate的中文意思(motivate 和 stimulate 的区别和搭配用法哪个跟interest、desire搭配)
2026年6月28日 05:30
interaction analysis(interaction analysis是什么意思)
2026年7月9日 22:30
springfestival六年级作文(六年级关于春节的英语作文)
2025年6月8日 20:00
张店区北京路附近一寸照片照相馆位置在哪?上海有哪些比较好的摄影培训学校
2026年9月14日 15:30
感性无功和容性无功的区别(如何理解感性无功功率和容性无功功率)
2025年7月20日 09:30
js工作中编写代码的规范(js代码规范问题 JavaScript判断语句规范)
2025年6月10日 09:45
conduct讲解(ACCA高频考点讲解:Money laundering)
2026年5月21日 08:00
java在线编译环境(关于java环境配置问题,急!!!在线等)
2025年10月21日 09:45
单元测试类型(软件测试里面的组装测试和单元测试是什么软件测试都有哪些重要的分布讲下什么意思)
2026年7月28日 12:45
sqlyog和sql server的区别(sqlyogultimate和sqlyog的区别)
2025年10月15日 15:15








