回 帖 发 新 帖 刷新版面

主题:关于字符串输出的问

有字符串;
          char a[]="123456789\0",  *p=a;
    执行语句:
          cout<<(p+3)<<'\n';
  输出:         456789
    我不清楚为什么该语句将字符数组的第四个元素后的元素都输出了,书上也找不到相关的叙述,希望大家给我指点迷津.谢谢!
                

回复列表 (共5个回复)

沙发

字符串输出是从输出位直开始一直到遇到‘\0’为止。

板凳

such as the first floor.

3 楼

再问一楼,为什么我用:

     cout<<*(p+3)<<'\n';

      语句就只输出字符串的一个元素:4, 而不输出到'\0'呢?

4 楼

*(p+3)只是第四个元素,当然是只输出‘4’了。
而p+3是地址,就是要从p+3那个地方开始输出,直到遇见‘\0’
如果是cout<<p,则就全部输出了。

5 楼

谢谢四楼的!我懂了.

我来回复

您尚未登录,请登录后再回复。点此登录或注册