#include <iostream>
#include <string.h>
void foo( char * a, char * b) {
char * temp = new char [ strlen ( a) + 1 ] ;
strcpy ( temp, a) ;
std:: cout << "temp = " << temp << " a = " << a << " b = " << b << std:: endl ;
strcpy ( a, b) ;
std:: cout << "temp = " << temp << " a = " << a << " b = " << b << std:: endl ;
strcpy ( b, temp) ; // this copies 6 bytes to b, which puts a 0 in the first byte of a.
std:: cout << "temp = " << temp << " a = " << a << " b = " << b << std:: endl ;
delete [ ] temp;
}
int main( ) {
char a[ ] = "First" ;
char b[ ] = "Last" ;
std:: cout << "a size is " << sizeof ( a) << std:: endl ;
std:: cout << "b size is " << sizeof ( b) << std:: endl ;
std:: cout << "address of a[0] is " << ( void * ) & a[ 0 ] << std:: endl ;
std:: cout << "address of b[0] is " << ( void * ) & b[ 0 ] << std:: endl ;
foo( a, b) ;
std:: cout << "A After: " << a << "\n " ;
std:: cout << "B After: " << b << "\n \n " ;
}
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4KICAgICNpbmNsdWRlIDxzdHJpbmcuaD4KCiAgICB2b2lkIGZvbyhjaGFyKiBhLCBjaGFyKiBiKXsKICAgICAgICAgICAgIGNoYXIqIHRlbXAgPSBuZXcgY2hhcltzdHJsZW4oYSkrMV07CgogICAgICAgICAgICAgc3RyY3B5KHRlbXAsIGEpOwogICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJ0ZW1wID0gIiA8PCB0ZW1wIDw8ICIgYSA9ICIgPDwgYSA8PCAiIGIgPSAiIDw8IGIgPDwgc3RkOjplbmRsOwoKICAgICAgICAgICAgIHN0cmNweShhLCBiKTsKICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAidGVtcCA9ICIgPDwgdGVtcCA8PCAiIGEgPSAiIDw8IGEgPDwgIiBiID0gIiA8PCBiIDw8IHN0ZDo6ZW5kbDsKCiAgICAgICAgICAgICBzdHJjcHkoYiwgdGVtcCk7IC8vIHRoaXMgY29waWVzIDYgYnl0ZXMgdG8gYiwgd2hpY2ggcHV0cyBhIDAgaW4gdGhlIGZpcnN0IGJ5dGUgb2YgYS4KICAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAidGVtcCA9ICIgPDwgdGVtcCA8PCAiIGEgPSAiIDw8IGEgPDwgIiBiID0gIiA8PCBiIDw8IHN0ZDo6ZW5kbDsKCiAgICAgICAgICAgICBkZWxldGVbXSB0ZW1wOwogICAgfQoKICAgIGludCBtYWluKCkgewogICAgICAgICBjaGFyIGFbXSA9ICJGaXJzdCI7CiAgICAgICAgIGNoYXIgYltdID0gIkxhc3QiOwoKICAgICAgICAgc3RkOjpjb3V0IDw8ICJhIHNpemUgaXMgIiA8PCBzaXplb2YoYSkgPDwgc3RkOjplbmRsOwogICAgICAgICBzdGQ6OmNvdXQgPDwgImIgc2l6ZSBpcyAiIDw8IHNpemVvZihiKSA8PCBzdGQ6OmVuZGw7CgogICAgICAgICBzdGQ6OmNvdXQgPDwgImFkZHJlc3Mgb2YgYVswXSBpcyAiIDw8ICh2b2lkKikmYVswXSA8PCBzdGQ6OmVuZGw7CiAgICAgICAgIHN0ZDo6Y291dCA8PCAiYWRkcmVzcyBvZiBiWzBdIGlzICIgPDwgKHZvaWQqKSZiWzBdIDw8IHN0ZDo6ZW5kbDsKCiAgICAgICAgIGZvbyhhLCBiKTsKCiAgICAgICAgIHN0ZDo6Y291dCA8PCAiQSBBZnRlcjogIjw8IGEgPDwgIlxuIjsKICAgICAgICAgc3RkOjpjb3V0IDw8ICJCIEFmdGVyOiAiPDwgYiA8PCAiXG5cbiI7CiAgICB9