64,631
社区成员
发帖
与我相关
我的任务
分享
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
const char str1[]="abc";
const char str2[]="abc";
cout<<(str1==str2)<<endl;
const char * str3="abc";
const char * str4="abc";
cout<<(str3==str4)<<endl;
return 0;
}
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
cout<<(str1==str2)<<endl;//不相等
cout<<(str3==str4)<<endl;//不相等
//
const char * str5="abc";
const char * str6="abc";
char *str7="abc";
char *str8="abc";
cout<<(str5==str6)<<endl;//str5等于str6等于str7等于str8
cout<<(str6==str7)<<endl;
cout<<(str7==str8)<<endl;
return 0;
}
运行结果是:
0
0
1
1
1
我就更不明白了,为什么str5等于str6等于str7等于str8,==到底比较什么?[/quote]
str1~str4指向的内存在zhan
#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
cout<<(str1==str2)<<endl;//不相等
cout<<(str3==str4)<<endl;//不相等
//
const char * str5="abc";
const char * str6="abc";
char *str7="abc";
char *str8="abc";
cout<<(str5==str6)<<endl;//str5等于str6等于str7等于str8
cout<<(str6==str7)<<endl;
cout<<(str7==str8)<<endl;
return 0;
}
运行结果是:
0
0
1
1
1
我就更不明白了,为什么str5等于str6等于str7等于str8[/quote]
str1~str4指向的内存在栈区,加了const就不能修改其内容。str5~str8指向的内存在常量区,不管加不加const都不能修改其内容。但不加const的 *str7 = 'z' 可以通过编译,执行时会报错。加了const的 *str5 = 'z'编译都不能通过。
str5=str6=str7=str8说明它们都指向常量区的同一块内存。不管加不加const。
如果对str5重新赋值str5 = "xyz";则str5中保存的地址会改变,使其指向另一块常量区内存。而str5原来指向的常量区内存中的内容并未改变,仍是"abc"#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
cout<<(str1==str2)<<endl;//不相等
cout<<(str3==str4)<<endl;//不相等
//
const char * str5="abc";
const char * str6="abc";
char *str7="abc";
char *str8="abc";
cout<<(str5==str6)<<endl;//str5等于str6等于str7等于str8
cout<<(str6==str7)<<endl;
cout<<(str7==str8)<<endl;
return 0;
}
运行结果是:
0
0
1
1
1
我就更不明白了,为什么str5等于str6等于str7等于str8#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
cout<<(str1==str2)<<endl;//不相等
cout<<(str3==str4)<<endl;//不相等
//
const char * str5="abc";
const char * str6="abc";
char *str7="abc";
char *str8="abc";
cout<<(str5==str6)<<endl;//str5等于str6等于str7等于str8
cout<<(str6==str7)<<endl;
cout<<(str7==str8)<<endl;
return 0;
}
运行结果是:
0
0
1
1
1
我就更不明白了,为什么str5等于str6等于str7等于str8,==到底比较什么?#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
cout<<(str1==str2)<<endl;//不相等
cout<<(str3==str4)<<endl;//不相等
//
const char * str5="abc";
const char * str6="abc";
char *str7="abc";
char *str8="abc";
cout<<(str5==str6)<<endl;//str5等于str6等于str7等于str8
cout<<(str6==str7)<<endl;
cout<<(str7==str8)<<endl;
return 0;
}
运行结果是:
0
0
1
1
1
我就更不明白了,为什么str5等于str6等于str7等于str8,==到底比较什么?#include "stdafx.h"
#include <iostream>
using namespace std;
int main(void)
{
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
cout<<(str1==str2)<<endl;//不相等
cout<<(str3==str4)<<endl;//不相等
//
const char * str5="abc";
const char * str6="abc";
char *str7="abc";
char *str8="abc";
cout<<(str5==str6)<<endl;//str5等于str6等于str7等于str8
cout<<(str6==str7)<<endl;
cout<<(str7==str8)<<endl;
return 0;
}
运行结果是:
0
0
1
1
1
我就更不明白了,为什么str5等于str6等于str7等于str8,==到底比较什么?[/quote]
str5 到 8 都是指针,== 比较的是指针的值(指针中所存储的地址)。
===================
== 不会比较指针指向内容(这里就是字符串)