最近在找工作,遇到一道笔试题,让我很是纠结不知道这个题到底考的是什么,运行了之后豁然开朗
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=0x7fffaca3df50
b=0x7fffaca3df40
c=0x7fffaca3df30
d=0x7fffaca3df20
e=0x4006d8
f=0x4006d8
g=0x4006d8
h=0x4006d8
解析:因为a和b都是在栈中的,虽然他俩的值是一样的,但是他们在栈中存放的位置不一样
c和d同理
e、f、g、h他们四个都是指针都是指向数据段中.ordata区的“123”,所以他们的地址是一样的;