【发布时间】:2021-11-17 08:56:15
【问题描述】:
我正在学校学习 c 编程,并且有一个关于 char* 的问题。 我初始化了char* str5和char* str6,它们的值完全一样。 我要确认的是,如果我在 if 语句中比较它们,是否总是比较它的地址?如果是,为什么?
char* str5 = "hold";
printf("str5: %s\n", str5, str5);
char* str6 = "hold";
if (str5 == str6){
printf("str5 and str6 point to the same address\n");
}
else{
printf("str5 and str6 point to different addresses\n");
}
感谢任何反馈,非常感谢!
【问题讨论】:
-
是的,代码是比较两个字符串的地址,而不是字符串的内容。问题是这两个地址可能相同,也可能不同。所以
if语句没有给你任何有用的信息。在某些系统上,代码将始终打印“相同”。其他系统将始终打印“不同”。还有其他系统可能会根据编译器设置和/或月相打印“相同”或“不同”。 -
这两个指针都是局部变量,所以......他们是umm.....比较的。
标签: arrays c if-statement char comparison