【问题标题】:comparing Empty Value and NULL in C比较C中的空值和NULL
【发布时间】:2021-07-19 02:00:27
【问题描述】:

我有一个问题 - 人们通常如何将值与 NULL 或数组中的空白进行比较?

事情从这里开始: 我创建了一个空指针数组 - 只需使用代码:

 Vertex *VertexArray[15];

现在我很想将另一个 Vertex 节点与这个数组进行比较 - 比如 1st 一个。 - VertexArray[0]

但我不能...系统不允许我这样做... 它向我显示错误:

我使用了这个论点-

if ( VertexArray[A->BusStopNumber]->Vinfo== NULL || VertexArray[A->BusStopNumber]->Vinfo->BusStopNumber == A->BusStopNumber)//both A and B are not in the graph   

我做错了smh 吗?或者我应该如何解决?

感谢大家的帮助。

【问题讨论】:

  • 与 null 的比较完全按照您的方式完成
  • “系统不允许我这样做”是什么意思?
  • 请注意,如果VertexArray[A->BusStopNumber] 为空或无效,那么您可能不会尝试访问假设的指向对象的成员。具体来说,评估VertexArray[A->BusStopNumber]->Vinfo 在这种情况下会产生未定义的行为。为避免这种情况,您可以先对 VertexArray[A->BusStopNumber] 进行空检查。
  • 嗨,约翰,感谢您的回复 - 我已经更新了我的问题 :)
  • @JohnBollinger 嘿伙计 - 我认为你是对的 - 我需要第一次 NULL 检查!!!!

标签: arrays c graph null


【解决方案1】:

我有一个问题 - 人们通常如何将值与数组中的 Null 或空格进行比较?

NULL 和空白是两个非常不同的东西。 NULL 是不指向任何有意义的指针的标准值。

在您的代码中,VertexArray[A->BusStopNumber]->Vinfo 会导致段错误,因为VertexArray[A->BusStopNumber] 可能为 NULL,->Vinfo 正在尝试访问与 NULL 相关的内存,而 NULL 不存在。

您可以通过先检查 VertexArray[A->BusStopNumber] 是否为 NULL 来解决此问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-01
    • 2012-10-14
    相关资源
    最近更新 更多