如果将一个值(属于一个数组)与另一个不属于同一个数组的值(它在序列之外)进行比较,会发生什么情况
char arr[] = "yo";
strchr(arr + 3, '\r')
这能让程序崩溃吗? 或者它只是与其他地方的char进行比较?
arr
如果类型为char[3]
。
arr+3
是指向数组最后一个元素之后的1的指针。 在数组的最后一个元素之后获取指向1的指针是合法的,但取消引用它是未定义的行为。
strchr
期望第一个参数是指向空终止的C字符串的指针。 在这里传递上面的指针会导致未定义的行为。