我寫了一個程序來使用指針交換兩個字符串。使用指針交換兩個字符串打印奇怪的輸出
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指針的數組。 –