首页 > 其他 > 详细

C中为什么不能用==比较字符串?

时间:2019-10-11 12:45:53      阅读:118      评论:0      收藏:0      [点我收藏+]

通常的回答是,==比较的不是字符串的内容,它是在比较指针。或者说,==(或者!=)仅比较两个字符串的首地址,而不会比较字符串每个字符。

那其实接下来应该问的问题是,为什么会只比较首地址呢?

因为早期的C语言只能使用标量。

简单的说,标量scalar就是指char, int, double, enum等数值类型,以及指针。像数组、结构体、共同体这样将多个标量组合起来的类型,被称为聚合类型aggregate。

字符串其实就是char类型的数组,也就是说它不是标量,因此在C中不能用==比较。

在ANSI C中,追加了几个功能:

. 结构体的一次性赋值

. 将结构体作为函数参数值进行传递

. 将结构体作为函数返回值返回

. auto变量的初始化

只涉及结构体;字符串还是不能用==比较的。

C中为什么不能用==比较字符串?

原文:https://www.cnblogs.com/freshair_cnblog/p/11652985.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!