List*plist 中的*plit==NULL和Node*pnode 中pnode==NULL有什么区别吗?
时间: 2024-05-26 19:16:43 浏览: 21
有区别。
`List* plist` 中的 `*plist == NULL` 表示指针 `plist` 指向的地址为空,即指针没有指向任何有效的内存地址,可能是尚未分配内存或者已经被释放了。而这个指针本身是有效的,可以被重新指向其他的内存地址。
`Node* pnode` 中的 `pnode == NULL` 表示指针 `pnode` 指向的地址为空,即指针没有指向任何有效的内存地址,可能是尚未分配内存或者已经被释放了。和上面不同的是,这个指针本身可能是无效的,也可能是有效的。如果这个指针是无效的,那么在使用它时会导致程序崩溃。
相关问题
unsigned int ListItemCount(const List * plist) { Node * pnode = *plist;}
这段代码存在错误。首先,`unsigned int`是一个返回值类型,但是函数体中没有对应的返回语句,会导致编译错误。其次,在函数体中,`pnode`被声明为指向`Node`类型的指针,但是`Node`类型并没有被定义。我们可以将`Node`类型改为链表节点的结构体类型,例如:
```c
typedef struct node {
int data;
struct node *next;
} Node;
unsigned int ListItemCount(const List *plist) {
Node *pnode = *plist;
// 统计链表节点数量的代码
}
```
其中,`Node`表示链表节点的结构体类型,包含一个整型数据成员`data`和一个指向下一个节点的指针成员`next`。`pnode`指向链表的第一个节点。在函数体中,我们可以通过遍历链表来统计节点数量。
void freeList(Node ** pList) { Node * p = *pList; while (p!=NULL) { Node * t = p; p=p->next; free(t); } *pList = NULL; }为什么要定义指针p,和指针t,直接使用*pList操作不行吗
在函数内部使用*pList操作也是可以实现的,但是为了避免修改指针本身的值,一般会使用一个指针变量p来进行操作,这样可以在函数内部对p进行操作,而不会对*pList产生影响。同时,使用指针变量t来保存p指向的节点,以便在释放该节点后继续遍历链表,防止出现野指针或者内存泄漏的问题。另外,使用指针变量p和t也可以让代码更加清晰易读,方便理解和维护。
相关推荐
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)