zoukankan      html  css  js  c++  java
  • c学习笔记之static、const

    (1)static 静态变量、静态函数。作用域只对本文件(xxx.c)有效,且静态函数声明不能出现在xxx.h头文件中

    上实战代码:

    /***********************************************************************
    *                局部变量
    ***********************************************************************/
    static D_TIMER_ID  gui_tick_timer_id = -1;


    /***********************************************************************
    *                局部函数原型
    ***********************************************************************/
    static D_VOID gui_tick_timer_func(D_UINT32 id, D_VOID* argc);


    /***********************************************************************
    *                全局函数实现
    ***********************************************************************/
    /******************************************************************
    函数原型:ui_gui_timer_init

    功能描述:GUI 定时器初始化函数

    参数: 无
     
    返回值: 
     D_SUCCESS: 成功
     D_FAILURE:   失败

    注意:
    ******************************************************************/
    int ui_gui_timer_init(D_VOID)
    {
     D_INT32 ret;

     ret = DG_timer_create(DG_TIMER_REPEAT, gui_tick_timer_func, NULL, &gui_tick_timer_id);
     if(D_SUCCESS != ret)
     {
      return D_FAILURE;
     }

     DG_timer_set_interval(gui_tick_timer_id, GUI_TIMER_TICK);
     DG_timer_start(gui_tick_timer_id);

     return D_SUCCESS;
    }


    /***********************************************************************
    *                局部函数实现
    ***********************************************************************/
    static D_VOID gui_tick_timer_func(D_UINT32 id, D_VOID* argc)
    {
     D_INT32 ret;

     ret = ui_gui_msg_send(WMUI_TICK, GUI_TIMER_TICK, 0, 0);
    }

    (2)const  形参变量修饰符、函数体内变量修饰符、函数返回值修饰符。 指定变量为常量不可更改。

    void stack_push(Stack *stack, const void *data) {
     
     LinkedListNode *list_node = NULL;
     
     if (stack == NULL) {
            return;
        }
     
     list_node = linked_list_node_construct(data);
     
     linked_list_append_node(stack->list, list_node);
     
    }

    const void *stack_pop(Stack *stack) {

     LinkedListNode *list_node = NULL;
        const void *data = NULL;
     
     if (stack == NULL) {
            return NULL;
        }
     
     linked_list_seek_end(stack->list);
     
     list_node = linked_list_get_next_node(stack->list);
     
     if (list_node == NULL) {
            return NULL;
        }
      
     data = linked_list_node_get_data(list_node);
     
     linked_list_remove_node(stack->list, list_node);
     
     return data;

    }

    备注:

    C语言的标准内存分配函数:malloccallocrealloc等。
    malloccalloc的区别为1块与n块的区别:
    malloc调用形式为(类型*)malloc(size):在内存的动态存储区中分配一块长度为“size”字节的连续区域,返回该区域的首地址。
    calloc调用形式为(类型*)calloc(n,size):在内存的动态存储区中分配n块长度为“size”字节的连续区域, 每一位都初始化为零,返回首地址。
    realloc调用形式为(类型*)realloc(*ptr,size):将ptr内存大小增大到size。

  • 相关阅读:
    自己上手写性能测试工具(一)
    你的领导真的很傻X吗?
    微软自动化测试工具palywright
    虫师『性能测试』文章大汇总
    虫师『软件测试』基础 与 测试杂谈
    「UI 测试自动化selenium」汇总
    web测试02
    web测试01
    测试20
    测试19
  • 原文地址:https://www.cnblogs.com/fx2008/p/2205296.html
Copyright © 2011-2022 走看看