我写了一个程序来使用指针交换两个字符串。使用指针交换两个字符串打印奇怪的输出
char *names[]={"Sachin","Kapil","Ajay","Sunil","Anil"};
cout<<"String II is ";cout<<names[1];
cout<<"\nString IV is ";cout<<names[3];
char *t;
t=names[1];
names[1]=names[3];
names[3]=t;
cout<<"\nString II is ";cout<<names[1];
cout<<"\nString IV is ";cout<<names[3];
在第一行中我用炭指针数组以存储串的第一字符的地址。
当我cout的名称[1]和名称[3]:
整个字符串印刷,但不应单独的字符指针的地址被打印?
此外,程序如何打印整个字符串而不是单独打印第一个字符?
编译后,我收到第1行的警告: 警告:不推荐将字符串常量转换为'char *'[-Wwrite-strings] |
该程序按预期运行,但我很想知道它是如何工作的。我遇到了一个实现,他们使用cout.write(names [i],len)打印整个字符串(这很有意义) ,但令我惊讶的是,上述方法也可以工作(即使没有任何增加指针值来打印下一个字符)。
有关上述问题的任何提示和建议,将不胜感激。谢谢!
它必须将'char * names []'分解为两个块。 'char *'和'names []'是一个名为char指针的数组。 –