首页 > 解决方案 > 与序列外的值进行比较

问题描述

如果将一个值(属于一个数组)与另一个不属于同一个数组的值(它在序列之外)进行比较会发生什么

char arr[] = "yo";
strchr(arr + 3, '\r')

这会使程序崩溃吗?还是仅与其他地方的字符进行比较?

标签: c++arrays

解决方案


arr如果是类型char[3]

arr + 3是一个指针,指向数组最后一个元素之后的 1。获取指向数组最后一个元素后 1 的指针是合法的,但取消引用它是未定义的行为。

strchr期望第一个参数是指向以空结尾的 C 字符串的指针。在此处传递上述指针会导致未定义行为。


推荐阅读