Я написал программу для обмена двумя строками с помощью указателей.Обмен двумя строками с помощью указателей печатает странный вывод
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];
В первой строке я использовал массив указателей на символы, чтобы сохранить адрес 1-го символа строк.
Когда я COUT имена [1] и имена [3]:
Вся строка была напечатана, но не адрес только указателя символов печататься?
Кроме того, как программа печатает всю строку вместо печати только первого символа?
После того, как я скомпилировал, я получил предупреждение из строки 1, в котором говорилось: предупреждение: устаревшее преобразование из строковой константы в 'char *' [-Wwrite-strings] |
Программа работает по назначению, но мне бы хотелось знать, как она работает. Мне удалось реализовать реализацию, в которой они использовали cout.write (names [i], len) для печати всей строки (что имеет смысл) , но, к моему удивлению, вышеупомянутый метод работает тоже (даже без какого-либо увеличения значения указателя для печати следующего символа).
Любые советы и предложения по перечисленным выше вопросам были бы оценены. Спасибо!
Должно быть разбиение 'char * names []' на два блока, подобные этому. 'char *' и 'names []', который представляет собой массив указателей на char, называемых именами. –