首页 > 解决方案 > 在 C 函数调用中返回一个空项

问题描述

我想返回堆栈中的最后一个。类似于以下内容:

Item* get_last_item()
{
    if (item_stack_size == 0) {
        // return <nothing> ?
    }  else {
         return ItemStack[item_stack_size-1];
    }
}

null如果堆栈为空,则返回等效值时的建议做法是什么?这通常会发出硬错误吗?类似于 的值(Item*) 0,或者做这样的事情的建议做法是什么?我的第一个想法是做这样的事情,但我不确定是否有更好的方法:

Item* get_last_item()
{
    return (item_stack_size != 0) ? ItemStack[item_stack_size-1] : (void*) 0;
}

标签: cpointersnull

解决方案


对于返回指针的函数,NULL 指针可以用作带外值(调用者当然应该在取消引用之前检查指针是否为 NULL):


Item *pop_last_item()
{
    if (!item_stack_size) {
        return NULL;
    }  else {
         return ItemStack[--item_stack_size];
    }
}

推荐阅读