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语言的标准内存分配函数:malloc,calloc,realloc等。
malloc与calloc的区别为1块与n块的区别:
malloc调用形式为(类型*)malloc(size):在内存的动态存储区中分配一块长度为“size”字节的连续区域,返回该区域的首地址。
calloc调用形式为(类型*)calloc(n,size):在内存的动态存储区中分配n块长度为“size”字节的连续区域,
realloc调用形式为(类型*)realloc(*ptr,size):将ptr内存大小增大到size。
邮箱:steven9801@163.com
QQ: 48039387