【问题标题】:comparison between char* valueschar* 值之间的比较
【发布时间】: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


【解决方案1】:

字符串不是 C 中的内置类型。你有两个 char * 类型的变量,每个变量都包含字符串常量第一个字符的地址。

因此,当您使用 == 比较 str5str6 时,您是在比较两个地址。

如果要比较两个字符串是否相等,则需要使用strcmp 函数。

【讨论】:

  • 感谢您的清晰解释!我很感激
猜你喜欢
  • 2013-05-10
  • 2013-06-15
  • 1970-01-01
  • 1970-01-01
  • 2012-10-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-09
相关资源
最近更新 更多