【问题标题】:Is using a function that assigns to a null pointer using the null pointer as an argument valid in C?是否使用一个函数,该函数使用空指针作为 C 中有效的参数分配给空指针?
【发布时间】:2013-03-01 15:20:44
【问题描述】:

我正在尝试插入到链表的前面,并在 head 为 NULL 时返回分配的 head,但它似乎只在 head 不为 NULL 的情况下工作。

基本上,如果

node* x = NULL;

x = addfront(x, 3)

有效吗?

【问题讨论】:

  • 你的意思是“它只有在 head 不为 NULL 时才有效”?当它“不起作用”时它会做什么?还有addfront() 做什么/返回?
  • 它可能有效也可能无效,具体取决于addfront 中的代码。

标签: c singly-linked-list


【解决方案1】:

是否正在使用一个函数,该函数使用空指针作为 C 中有效的参数分配给空指针?

这取决于addfront 的内容。只要您不在addfront 中取消引用x,它就完全有效,因为取消引用空指针是一种未定义的行为。

它似乎只在 head 不为 NULL 的情况下有效。

我们需要addfront 源代码。如果不取消引用x,则错误在别处。

【讨论】:

    【解决方案2】:

    空指针是可以的,只要你不尝试取消引用它们。

    类似

    node* x = NULL;
    x = NULL;
    

    完全没问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-08
      • 2015-09-06
      • 2013-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-11
      相关资源
      最近更新 更多