搜索
bottom↓
回复: 10

在函数内部使用字符串常量,编译器会记录这个地址嘛?

[复制链接]

出0入0汤圆

发表于 2017-6-19 17:04:37 | 显示全部楼层 |阅读模式
突然有如下这个疑问,不知如何下手,恳请大神指教~~~

  1. void menu_disp()
  2. {
  3.     uint8_t *str = "abc";
  4.     lcd12864_disp_str(2, 0, str);
  5. }
复制代码


按照我的理解,"abc"(首地址)使用1次就被丢弃...我调试时发现,当我反复调用menu_disp()时,,str保存的指针每次都是不变的...

1>编译器每次都重新申请"abc"(首地址),只不过每次申请的"abc"地址相同...

2>编译器发现我多次调用"abc",于是将"abc"(首地址)通过某种方式保存为静态变量(退出函数时仍保存相应的值).

请大神指教,这里到底是采用哪种方式?为什么?谢谢哈...

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

发表于 2017-6-19 17:11:20 | 显示全部楼层
str为指向字符串“abc”的指针,而字符串“abc”是以常量的形式存在FLASH中的,其地址是固定的,所以每次进入函数时,申请的str都被初始化成同一个值。

出0入33汤圆

发表于 2017-6-19 17:53:02 | 显示全部楼层
"abc"是在rom中,地址是固定的,str才是变量

出40入42汤圆

发表于 2017-6-19 19:45:00 | 显示全部楼层
楼上说的都对,注意常量与局部变量的存储区域是不一样的

出0入475汤圆

发表于 2017-6-19 22:25:36 来自手机 | 显示全部楼层
其实归根结底是不是可以认为楼主c语言基础知识或者是这种芯片的认知不够呢,哈哈开玩笑的了,这个应该是和const修饰为const char"abc"一样吧?我没有学过c,正好跟着学习一下

出0入0汤圆

发表于 2017-6-20 09:02:42 来自手机 | 显示全部楼层
“编译器每次都重新申请”,单是看到这句话就知道楼主的学的很混乱连基本的都不知道呢,不知楼主有没有打开看过编译生成的bin文件呢?

出0入0汤圆

 楼主| 发表于 2017-6-20 09:03:46 | 显示全部楼层
感谢大神指导~~~谢谢~~~

出0入0汤圆

 楼主| 发表于 2017-6-20 11:40:18 | 显示全部楼层
本帖最后由 擦鞋匠 于 2017-6-20 14:33 编辑
XA144F 发表于 2017-6-20 09:02
“编译器每次都重新申请”,单是看到这句话就知道楼主的学的很混乱连基本的都不知道呢,不知楼主有没有打开 ...


说实话,还真没看过bin文件呢...

冒昧的请教大神2点:

1> 会看bin文件对单片机编程而言,一般可能会有哪些好处(这样才有动力...)?

2> 如何学习看bin文件呢(简单推荐点资料,或者学习方法都行...)?

感谢大神不惜赐教~~~

出0入0汤圆

发表于 2017-6-20 13:46:48 | 显示全部楼层
看下鏈接文件

出0入0汤圆

发表于 2017-6-20 16:19:28 来自手机 | 显示全部楼层
赞同2楼的观点。还有,不是编译器每次申请,我觉得和编译器没多大关系,每次进入这个函数,其实是在执行阶段,不是编译。

出0入0汤圆

发表于 2017-6-20 23:14:01 来自手机 | 显示全部楼层
跟字模一样  常量字符串
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 16:18

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表