一个简短的程序~为什么这样的输出结果??

来源:百度知道 编辑:UC知道 时间:2024/06/20 08:12:24
#include<iostream>
using namespace std;
int main(){
char str1[]="abc";
char str2[]="abc";
const char str3[]="abc";
const char str4[]="abc";
const char* str5="abc";
const char* str6="abc";

cout<<(str1==str2)<<endl;
cout<<(str3==str4)<<endl;
cout<<(str5==str6)<<endl;
}
输出结果是
0
0
1
为什么??之后给您加分!

cout<<(str1==str2)<<endl; /* str1和str2的首地址并不一样,所以输出0 */
cout<<(str3==str4)<<endl; /* str3和str4的首地址依然不一样,所以输出0 str1str2str3和str4都是数组,本身直接调用得到的是自己的首地址*/
cout<<(str5==str6)<<endl; /* str5和str6指向同一个常量"abc"的首地址,所以地址相等,输出1. 指针直接调用得到的是指针中保存的"abc"的地址*/

5和6你比较的是指针,指针是地址,当然不一样啦