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

2019-12-27 18:50发布

突然有如下这个疑问,不知如何下手,恳请大神指教~~~

  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"(首地址)通过某种方式保存为静态变量(退出函数时仍保存相应的值).

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

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。