当前位置: 首页 > wzjs >正文

网站建设地址 北京windows系统优化软件排行榜

网站建设地址 北京,windows系统优化软件排行榜,企业名录搜索软件那个最好,个人音乐网站源码问题描述 第一段位于LCD.h和LCD.c中, 定义个一个结构体lcd_params,并直接给与指针名*p_lcd_params; 我发现我在调用这个结构体时,即在LCD.c中,使用指针类型定义的 static p_lcd_params p_array_lcd[LCD_NUM]; static p_lcd_par…

问题描述

第一段位于LCD.h和LCD.c中,

        定义个一个结构体lcd_params,并直接给与指针名*p_lcd_params;

我发现我在调用这个结构体时,即在LCD.c中,使用指针类型定义的

static p_lcd_params p_array_lcd[LCD_NUM];
static p_lcd_params g_p_lcd_selected;.

并且可以正常运行

第二段代码位于Timer.c中

        定义个一个结构体timer_desc,给与指针名ptimer_desc;

我在调用这个结构体时,使用指针类型会有错误,只能使用结构体名定义

timer_desc timer_arry[Timer_NUM];

//LCD.H
typedef struct lcd_params
{
xxxxx
} lcd_params, *p_lcd_params;//LCD.C
static p_lcd_params p_array_lcd[LCD_NUM];
static p_lcd_params g_p_lcd_selected;int register_lcd(p_lcd_params plcd)
{int i;for (i = 0; i < LCD_NUM; i++){if (!p_array_lcd[i]){p_array_lcd[i] = plcd;return i;}}return -1;
}

typedef void (*timer_func)(void);
typedef struct timer_desc
{char *name;timer_func fp;
} timer_desc, *ptimer_desc;timer_desc timer_arry[Timer_NUM];int register_timer(char *name, timer_func fp)
{int i;for (i = 0; i < Timer_NUM; i++){if (!timer_arry[i].fp){timer_arry[i].name = name;timer_arry[i].fp = fp;return 0;}}return -1;
}

问题原因:

在第一段代码中,我在使用p_array_lcd[i]时,在外部调用 register_lcd 的时候传入了结构体的地址:即这个函数他传入了一个结构体地址

int register_lcd(p_lcd_params plcd) 

lcd_params my_lcd = { ... };
register_lcd(&my_lcd);  // 传入结构体地址

而在我的第二段代码中,我并没有为这个结构体指针分配地址。而如果他要是用指针的话

需要使用malloc来为结构体分配内存,或者按照第一种来为他传入结构体地址。

timer_arry[i] = (ptimer_desc)malloc(sizeof(timer_desc));

3:访问方式问题

如果使用指针来定义的话,在访问结构体内部元素时,要使用->来访问

ptimer_desc timer_arry[Timer_NUM];  // 一个结构体指针数组
timer_arry[i]->fp   // 正确 ✅
timer_arry[i]->name // 正确 ✅

不使用结构体来定义的话,使用.来访问结构体元素

timer_desc timer_arry[Timer_NUM];  // 一个结构体指针数组
timer_arry[i].fp   // 正确 ✅
timer_arry[i].name // 正确 ✅

4:第一类代码不使用结构体指针

这个表示:数组中每个元素是一个指向 lcd_params 结构体的指针。你可以在别处创建结构体,然后通过 & 传入:

static p_lcd_params p_array_lcd[LCD_NUM]; // 数组元素是结构体指针

lcd_params lcd1 = { ... }; register_lcd(&lcd1); // ✅ 传入地址,存入指针数组


如果不使用指针,而是改成结构体数组?

static lcd_params lcd_array[LCD_NUM]; // 数组元素是结构体本体 static int lcd_count = 0;

然后 register_lcd 函数可以这样写:

int register_lcd(lcd_params *plcd)

{

if (lcd_count >= LCD_NUM)

return -1;

lcd_array[lcd_count] = *plcd; // 拷贝整个结构体

return lcd_count++;

}


这样做的优点:

  1. 不需要动态分配内存(malloc),更简单、更安全。

  2. 所有结构体数据都存储在本地数组中,便于统一管理。

  3. 避免指针悬空、内存泄漏等问题。

这样做的缺点:

  1. 结构体会被拷贝一次,如果结构体很大(比如包含字符串、数组等),效率会略低。

  2. 如果你希望多个地方共享同一个结构体的数据,就做不到了,因为你拷贝的是副本。

  3. 结构体中如果有 char *void * 成员,还要小心浅拷贝问题(拷贝指针但不是数据本体)。

🆚 指针 VS 非指针对比总结:

项目使用结构体指针不使用结构体指针(结构体数组)
内存管理需自己分配、释放(可能内存泄漏)编译期静态分配,自动管理
数据共享可在多个模块间共享同一结构体是拷贝副本,无法共享
拷贝开销拷贝指针,开销小拷贝整个结构体,开销可能更大
安全性易出错(空指针、悬空指针)更安全,逻辑更直观
灵活性灵活,可实现动态注册、释放等功能结构固定,适合数据量已知、场景简单

文章转载自:

http://VkbVsMnE.wmsgt.cn
http://c9jDvRKL.wmsgt.cn
http://WnLKjR4V.wmsgt.cn
http://qvU80aYD.wmsgt.cn
http://m0LpwYgL.wmsgt.cn
http://R5hqfzg5.wmsgt.cn
http://zeCsZZjS.wmsgt.cn
http://nQE826Lw.wmsgt.cn
http://xNemd4U1.wmsgt.cn
http://L0pBebz3.wmsgt.cn
http://PYzQkTat.wmsgt.cn
http://xQdxh2BV.wmsgt.cn
http://lbHiELi1.wmsgt.cn
http://Y8Wsb0dW.wmsgt.cn
http://ULBCqSUm.wmsgt.cn
http://Ly0gxKAv.wmsgt.cn
http://sV7mLXxF.wmsgt.cn
http://8qyLUr6K.wmsgt.cn
http://vJ2cw39y.wmsgt.cn
http://Mhmmvp4B.wmsgt.cn
http://c1DS9G0E.wmsgt.cn
http://78sjIpXF.wmsgt.cn
http://x9lRHAGF.wmsgt.cn
http://va8UJXuw.wmsgt.cn
http://fBvzSs37.wmsgt.cn
http://pjOCFK8Z.wmsgt.cn
http://4SPdjXMC.wmsgt.cn
http://YJcdnkhU.wmsgt.cn
http://jCqcWHUR.wmsgt.cn
http://x6uxfkMU.wmsgt.cn
http://www.dtcms.com/wzjs/744172.html

相关文章:

  • 网站下模板做网站犯法重庆巴南区网站建设
  • 自己做网站要固定ip在建设厅网站上查询注销建造师
  • 那曲做网站网络营销是什么的基础选择题
  • 企业免费网站制作比较好的东丽区做网站
  • 上海 政务网站建设情况网站建设费用应该开专票还是普票
  • 做设计网站的工作怎么样的网站核心词如何做
  • 网站建设的方向和任务wordpress 瀑布流分页
  • 网站开发查找漏洞的工具一个平台维护三天正常吗
  • wordpress 全站404企业老板培训课程
  • 建设网站必须要钱吗网络有哪些广告推广方式
  • 企业网站建设专业精准一 鸣远科技怎么去推广自己的公司
  • 合肥做网站可以吗淘宝如何提升关键词排名
  • 如何搭建静态网站源码门户网站模式
  • 代充网站怎么做校园网站建设材料
  • 南翔做网站公司小程序推广话术案例
  • 网站如何做口碑营销wordpress注册美化
  • 郑州网站建设的软件编程就是做网站吗
  • 做的好的大学生旅行有哪些网站适配网站建设模版
  • 专注七星彩网站开发wordpress 定制首页
  • 专业的网站建设官网上海广告传媒公司排名
  • 网站建设案例基本流程图企业网站网址举例
  • 网站项目实施方案怀化火车站网站
  • 山东港基建设集团网站学校网站建设市场分析
  • 广州市平安建设 网站北京优化营商
  • 建设网站的优势广告公司简介及制作经验
  • 汽贸公司网站建设手机一元云购网站建设
  • 多与pR值高的网站做链接自己做app难吗
  • 手把手教你做网站视频有没有帮忙推广的平台
  • 程序源码网站少儿编程自学网站
  • 微信群领券网站怎么做前端开发工具下载