V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
Distributions
Ubuntu
Fedora
CentOS
中文资源站
网易开源镜像站
z0z
V2EX  ›  Linux

如何检测接口的指针参数为空?

  •  
  •   z0z · Dec 10, 2018 · 2402 views
    This topic created in 2705 days ago, the information mentioned may be changed or developed.
    #include<stdio.h>
    #include<stdlib.h>
    
    typedef struct 
    {
      int age;
    }test_t;
    
    void test2(test_t *test2_val)
    {
      if(!test2_val)
      {
        printf("test2_val=null.\n");
      }
      else
      {
        printf("test2_val != null\n");
      }
    }
    
    int test(test_t *test_val)
    {
      test_t *bbb;
    
      if(!test_val)
      {
        printf("val=null.\n");
      }
      else
      {
        printf("val != null\n");
      }
    
      test2(bbb);
      return 0;
    }
    
    void fun(test_t *fun_val)
    {
      test_t *bbb;
            
      test(fun_val);
    
      printf("call test(bbb)--->\n");
      test(bbb);
      printf("<-----\n");
      
    }
    
    int main(void)
    {
      test_t *aaa;
    
      fun(aaa);
      printf("------after------>\n");
    
      test(aaa);
    }
    

    下面是上面这段代码的运行结果,编译和运行环境是 gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3)。 我的疑问是为什么会有!=null 这样的打印?

    val=null.
    test2_val != null
    call test(bbb)--->
    val=null.
    test2_val != null
    <-----
    ------after------>
    val=null.
    test2_val != null
    
    4 replies    2018-12-11 06:27:49 +08:00
    pursuer
        1
    pursuer  
       Dec 10, 2018
    局部变量是未初始化的,不一定是 NULL
    z0z
        2
    z0z  
    OP
       Dec 10, 2018
    @pursuer 那该如何检测通过 api 传进来的指针是否为空呢?
    pursuer
        3
    pursuer  
       Dec 10, 2018
    @z0z 检测指针为空的方法没有问题,应该让 api 确保传入的指针为 NULL 或一个有效的值
    z0z
        4
    z0z  
    OP
       Dec 11, 2018
    @pursuer 多谢了。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   972 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 31ms · UTC 19:13 · PVG 03:13 · LAX 12:13 · JFK 15:13
    ♥ Do have faith in what you're doing.