笔试题——同样的字符串存放的位置不同

来源:互联网 发布:91家居设计软件 编辑:程序博客网 时间:2024/06/05 14:25

最近在找工作,遇到一道笔试题,让我很是纠结不知道这个题到底考的是什么,运行了之后豁然开朗



  5    char a[] = "123";  6         char b[] = "123";  7         const char c[] ="123";  8         const char d[] ="123";  9         char* e = "123"; 10         char* f = "123"; 11         const char* g="123"; 12         const char* h="123";

问题是 a==b,c==d,e==f,g==h?

结果是:

[lalala@jjjjj ~]$ ./a.out a=0x7fffaca3df50b=0x7fffaca3df40c=0x7fffaca3df30d=0x7fffaca3df20e=0x4006d8f=0x4006d8g=0x4006d8h=0x4006d8

解析:因为a和b都是在栈中的,虽然他俩的值是一样的,但是他们在栈中存放的位置不一样

   c和d同理

   e、f、g、h他们四个都是指针都是指向数据段中.ordata区的“123”,所以他们的地址是一样的;




yopeace