登录
首页 >  Golang >  Go问答

C语言中的空指针类型

来源:stackoverflow

时间:2024-03-04 08:45:14 403浏览 收藏

从现在开始,努力学习吧!本文《C语言中的空指针类型》主要讲解了等等相关知识点,我会在golang学习网中持续更新相关的系列文章,欢迎大家关注并积极留言建议。下面就先一起来看一下本篇正文内容吧,希望能帮到你!

问题内容

我有一个 c 函数,在发生异常时返回 null。 go中没有内置类型来表示c null,如何检查返回值是否为null。下面是我的代码

retVal := C.myfunc()

if retVal == nil {
  // handle the error
}


解决方案


我认为您可以使用 nil 来测试 c 函数是否返回 null。尝试以下代码:

package main

/*
#include 
#include 

int* cfunc(int i) {
    if (i == 0) {
        return NULL;
    }

    int *p = (int*)malloc(sizeof(int));
    *p = 100;
    return p;
}
*/
import "C"

import "fmt"
import "unsafe"

func call_cfunc(i int32) {
    ret := C.cfunc(C.int(i))
    if ret == nil {
        fmt.Println("nil")
    } else {
        fmt.Println(*ret)
        C.free(unsafe.Pointer(ret))
    }
}

func main() {
    call_cfunc(0)
    call_cfunc(1)
}

以上就是《C语言中的空指针类型》的详细内容,更多关于的资料请关注golang学习网公众号!

声明:本文转载于:stackoverflow 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>