如何测试 C 指针是否指向结构体

问题描述 投票:0回答:1

我有一个链表结构

struct node {
 int data;
 node next;
}

和一个函数

struct node *insert_sorted (struct node *nodes, 
  int d) {
  // todo
}

我需要实现这个,以便给定一个新数据,它构造一个新节点并按排序顺序插入到链表中。

我要检查

insert_sorted
函数内部的第一件事是
nodes
是否指向任何内容或其他内容。 我的意思并不是检查指针是否是我所熟悉的
NULL
。 我的意思是我想检查地址
nodes
是否包含节点结构。 我想如果这是 Java 我也许可以写

if (nodes == null) {
  ...
}

但我不认为在 C 中可以做类似的事情。

我知道我可以尝试管理

nodes
指针,这样,如果它非空,那么它总是指向某个结构。 我可能最终会这样做。

但我只是想知道是否存在更直接的方法来解决问题。 有没有办法获取给定的非空指针并检查它是否指向任何内容?

c pointers struct null
1个回答
0
投票

A

struct node *
始终是
NULL
或指向某个
struct node
,除非您在代码中做了非法的事情。如果你做对了,问题的答案总是“是”。如果你做错了事情,你就调用了未定义的行为,所以问这个问题是没有用的。

© www.soinside.com 2019 - 2024. All rights reserved.