C中为什么不能用==比较字符串?
2024-09-01 10:54:01
通常的回答是,==比较的不是字符串的内容,它是在比较指针。或者说,==(或者!=)仅比较两个字符串的首地址,而不会比较字符串每个字符。
那其实接下来应该问的问题是,为什么会只比较首地址呢?
因为早期的C语言只能使用标量。
简单的说,标量scalar就是指char, int, double, enum等数值类型,以及指针。像数组、结构体、共同体这样将多个标量组合起来的类型,被称为聚合类型aggregate。
字符串其实就是char类型的数组,也就是说它不是标量,因此在C中不能用==比较。
在ANSI C中,追加了几个功能:
. 结构体的一次性赋值
. 将结构体作为函数参数值进行传递
. 将结构体作为函数返回值返回
. auto变量的初始化
只涉及结构体;字符串还是不能用==比较的。
最新文章
- MySQL升级
- 关于dll
- 比较详细Python正则表达式操作指南(re使用)
- [windows][C++][库]遍历删除文件夹
- 英文缩写&;名词
- PowerBuilder反编译
- 经典非原创,网页常用Javascript
- Spring+MyBatis实践—登录和权限控制
- javascript this关键字
- ssh整合时报出的异常及解决办法
- JavaScript学习日志(六):事件
- python netifaces模块
- 关于web XSS注入问题
- InfiniDB 修改一行的效率?
- eclipse常用快捷键(windows下)
- redis 安装-配置
- Blocks [POJ3734] [矩阵快速幂]
- 算法与数据结构(四) 图的物理存储结构与深搜、广搜(Swift版)
- hibernate 调用存储过程返回参数
- Eclipse搭建C++\C开发环境