帝企鹅的日记 发表于 2019-12-4 17:00:23

关于字符串数组的应用

#include <iostream>
using namespace std;
void main(){
        char ch={"AAA","BB","CCC"};
        char *p=NULL;
        char(*q)=NULL;
        q=ch;
        int i;
        p=new char;
        *p='b';
        *(*q+3)=*p;
        for(i=0;i<3;i++)
                cout<<q<<endl;
}
结果为:AAAbBB
             BB
            CCC
哪位大佬能解释一下:AAbBB怎么回事?

jackz007 发表于 2019-12-4 19:15:24

本帖最后由 jackz007 于 2019-12-4 23:13 编辑

      q 指向 ch,* p = 'b',那么,语句:
      *(* q + 3) = * p ;
      实际上就是下面的语句:
      ch = 'b' ;
      而 ch 应该是字符串 ch 的结束标志 '\0',可是,现在却变成了字符 'b' ,其结果,原来的字符串 ch 和 ch 拼接成为一个新的字符串 'AAAbBB',字符串 ch 成为字符串 ch 的后半部分。就是说,ch 其实是包含 ch 的。这个时候,如果打印 ch ,会得到 'AAAbBB',如果打印 ch ,还是原来的 'BB',如果打印 ch 自然依旧是 'CCC'。

帝企鹅的日记 发表于 2019-12-5 15:04:21

jackz007 发表于 2019-12-4 19:15
q 指向 ch,* p = 'b',那么,语句:

      实际上就是下面的语句:


感谢大佬,已明白
页: [1]
查看完整版本: 关于字符串数组的应用