您的位置:首页 > 其它

运行结果为啥,为啥

2016-02-03 10:02 309 查看
#include "stdio.h"
#include "conio.h"
#include <Map>
#include <string.h>

using namespace std;

class cmp
{
public:
bool operator()(const char* s1, const char* s2)
{
return strcmp(s1, s2) < 0;
}
};
typedef struct _struct_item
{
BOOL bType;
DWORD value;
char *buffer;
}ITEM;
map<char *, ITEM ,cmp> maps;
char *gstr;
void func()
{
map<char *, ITEM> ::iterator iter;
char str[10]="a";
gstr = str;
ITEM item;
printf("0X%X\n",&item);
printf("0X%X\n",str);
item.buffer = new char[10];
strcpy(item.buffer,"dedes");
maps.insert(pair<char *,ITEM>(str,item));
printf("--------------\n");
char *p;
for(iter = maps.begin();iter != maps.end();iter++)
{
printf("0X%X %s 0X%X\n",&(iter->first),iter->first,&(iter->second));
p = iter->first;
}
printf("--------------\n");
str[0]='b';
printf("0X%X\n",str);
p[0]='d';
printf("%s\n",str);
printf("--------------\n");

printf("--------------\n");
for(iter = maps.begin();iter != maps.end();iter++)
{
printf("0X%X %s 0X%X\n",&(iter->first),iter->first,&(iter->second));
}
printf("--------------\n");
}

int main()
{

func();

map<char *, ITEM> ::iterator iter;
printf("--------------\n");
for(iter = maps.begin();iter != maps.end();iter++)
{
printf("0X%X %s 0X%X\n",&(iter->first),iter->first,&(iter->second));
}
printf("--------------\n");
getchar();
return 0;
}
运行如下
0X28FED0
0X28FEE0
--------------
0X6E0F28 a 0X6E0F2C
--------------
0X28FEE0
d
--------------
--------------
0X6E0F28 d 0X6E0F2C
--------------
--------------
0X6E0F28  0X6E0F2C
谁能解释为啥吗   明明两个地址不一样,但修改一个地址的数据  另一个为啥跟着变化呢。--------------
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: