int main()
{
const char* p1 = "abcde";
const char* p2 = "abcde";
char arr1[] = "abcde";
char arr2[] = "abcde";
if (p1 == p2)
printf("p1==p2\n");
else
printf("p1!=p2\n");
if (arr1 == arr2)
printf("==\n");
else
printf("!=\n");
return 0;
}
运行的结果是:
p1==p2 !=
原因:
abcde是一串常量字符,放在特定的空间,不能改变,所以地址是定死在那一块
而p1和p2 都是指向abcde这串字符的首字母地址,所以它俩存放的地址一样,=
对于数组来说,他要存放这些字符,要开辟空间,每个变量开辟的地址肯定都不一样,arr1和arr2表示的是它们各自首元素的地址,不可能相等,!=