C中为什么不能用==比较字符串?
通常的回答是,==比较的不是字符串的内容,它是在比较指针。或者说,==(或者!=)仅比较两个字符串的首地址,而不会比较字符串每个字符。
那其实接下来应该问的问题是,为什么会只比较首地址呢?
因为早期的C语言只能使用标量。
简单的说,标量scalar就是指char, int, double, enum等数值类型,以及指针。像数组、结构体、共同体这样将多个标量组合起来的类型,被称为聚合类型aggregate。
字符串其实就是char类型的数组,也就是说它不是标量,因此在C中不能用==比较。
在ANSI C中,追加了几个功能:
. 结构体的一次性赋值
. 将结构体作为函数参数值进行传递
. 将结构体作为函数返回值返回
. auto变量的初始化
只涉及结构体;字符串还是不能用==比较的。
posted on 2019-10-11 11:15 freshair_cn 阅读(2365) 评论(0) 编辑 收藏 举报