字符串在C,&str

use*_*348 1 c pointers

我遇到了这个问题:

#include<stdio.h>
int main()
{
 char str[25]="Catch me, if u can!";
 printf("%s\n",&str+2);
 return 0;
}
Run Code Online (Sandbox Code Playgroud)

谁能解释一下我的意思&str+2?这是如何运作的?

小智 5

&str返回一个类型的指针char (*)[25].这意味着,该指针所指向的内存大小将是sizeof(str),即25.根据正常的指针算法,向该值添加2将导致指向类型的指针,该指针char (*)[25]将指向超过str数组末尾的25个字节.打印它很可能是未定义的行为.