请问字符串为什么可以这样(cout<<s+4;)输出,令s[3]=s[5]=0又是什么意思。

问题遇到的现象和发生背景
#include<iostream>
using namespace std;
int main() 
{
    char s[] = "abcdefg";
    s[3]= s[5]=0;
    cout << s << endl;
    cout << s + 4 << endl;
    system("pause");
    return 0;
}//结果输出:abc
 //          e


问题相关代码,请勿粘贴截图
运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

s[3]=0,就是从这个位置截断了,所以s变成了abc
但是s[4]还是保存在存储单元中,是e

cout格式化输出 s是数组 那么数组明就是指向数组起始位置的指针s+4 相当于s[4]哈哈
s3=s5=0相当于s5=0 s3=s5就都是0的意思

s默认指向字符串第一个元素,s+4就是输出第五个字符
s[3]= s[5]=0;表示下标为3的字符=下标为5的字符,再等于0,结束符