1 #include<stdio.h>
2 #include<string.h>
3
4 int main(void)
5 {
6 char p[] = "I'm shia";
7 printf("%p\n",p);
8 printf("%d\n",memrchr(p+3,'s',strlen(p)));
9 printf("%p\n",memchr(p,'i',strlen(p)));
10 return 0;
11 }
输出:
0x7fff0eeae950
0xeeae954 /*garbage value?*/
0x7fff0eeae956
为什么memrchr
返回值超出数组的边界p
,memchr
工作正常。
如果这种行为是故意的,为什么?