c++ - 与序列外的值进行比较
问题描述
如果将一个值(属于一个数组)与另一个不属于同一个数组的值(它在序列之外)进行比较会发生什么
char arr[] = "yo";
strchr(arr + 3, '\r')
这会使程序崩溃吗?还是仅与其他地方的字符进行比较?
解决方案
arr
如果是类型char[3]
。
arr + 3
是一个指针,指向数组最后一个元素之后的 1。获取指向数组最后一个元素后 1 的指针是合法的,但取消引用它是未定义的行为。
strchr
期望第一个参数是指向以空结尾的 C 字符串的指针。在此处传递上述指针会导致未定义行为。
推荐阅读
- macos - 在支持早期版本 Mac 的 Macos 10.14.5 上使用 gcc 编译
- service-worker - 如何在.net core 3中将启动类添加到工作服务模板
- caching - Solaris OS 和 L1 L2 L3 高速缓存
- openssl - 在 OpenSSL 1.1.x 中,确定给定的 SSL* 是否对应于连接的服务器端或客户端
- sql-server - 创建“视图”以连接两个数据库
- python - Spacy模型不一致的预测
- angular - 如何使用 Angular 4 使用模板驱动的表单发布表单数据
- css - 如何根据屏幕宽度计算 CSS 缩放因子?
- python - python检查日期时间比n天早吗?
- java - 错误:未找到 Gradle DSL 方法:“实施()”