*p=Null和p=0有什么区别吗
时间: 2024-05-25 08:13:58 浏览: 18
`p=NULL`和`p=0`本质上是相同的,它们都将指针p的值设置为NULL或0,表示它不指向任何有效的内存地址。
在C++中,NULL实际上是一个宏定义,被定义为0或者(void*)0。因此,`p=NULL`和`p=0`在C++中是等价的。
在C语言中,NULL被定义为一个指向void类型的空指针常量,通常被表示为0或者((void*)0)。因此,`p=NULL`和`p=0`在C语言中也是等价的。
总之,`p=NULL`和`p=0`的效果是相同的,但建议使用`p=NULL`,因为它更符合语言的规范和习惯。
相关问题
int * p=null;int * a=*p;
这段代码存在指针错误。首先,`p`被初始化为`null`,也就是空指针,不能直接用来访问内存。其次,在第二行中,`*p`表示访问空指针所指向的内存,会导致程序崩溃。应该将指针`p`指向一个合法的内存地址,例如:
```c
int x = 10;
int *p = &x; // 将指针p指向变量x的地址
int *a = p; // 将指针a指向指针p所指向的内存
```
这样就可以将指针`p`指向一个合法的内存地址,并将其赋值给指针`a`。注意,指针`a`和指针`p`指向的是同一块内存,它们具有相同的值,但是类型为`int *`。
struct node *head=NULL,*tail=NULL,p=NULL;
This code is not valid in C.
The "*" symbol is not used correctly.
Here is a corrected version:
```
struct node *head=NULL,*tail=NULL,*p=NULL;
```
This code declares three pointers to a struct node: head, tail, and p. All three pointers are initialized to NULL.