zoukankan      html  css  js  c++  java
  • ip4addr_ntoa和不可重入函数

    在网络中,有一个转换IP地址到ASIIC字符串的函数,该函数的返回值所指向的ASIIC字符串驻留在静态内存中,所以该函数不可重入。

    通俗的讲,在多任务系统中,一个任务执行在调用运行这个函数的时候,其他任务不能调用运行这个函数,如果你这样做了,那么二次调用的函数返回值是一样的,都是后次的值。

    char*
    ip4addr_ntoa(const ip4_addr_t *addr)
    {
      static char str[IP4ADDR_STRLEN_MAX];
      return ip4addr_ntoa_r(addr, str, IP4ADDR_STRLEN_MAX);
    }

    以上同时涉及到一个问题,函数参数是结构体和结构体指针的区别

    结构体做为函数参数的时候,是形参,所以不能改变结构体里面的值。

    结构体指针作为函数参数的时候,是实参,可以改变结构体里面的值。

  • 相关阅读:
    02 re模块
    24 内置模块re 正则表达式
    pickle 模块
    json模块
    命名元组
    os模块
    24 内置函数 命名元组(namedtuple) ,os ,sys,序列化,pickle,json
    functools
    ccc 音乐播放
    ccc prefab
  • 原文地址:https://www.cnblogs.com/429512065qhq/p/8920927.html
Copyright © 2011-2022 走看看