string a; char *p = "1"; a.append(p+0);
cout << a << endl;
이렇게 하면 1이 출력됨.
string a; char p = '1'; a.append(&p);
1쓰래기값입력N 이 출력됨.
왜죠??!?!?!?!?!?
char *p = "1"은 널문자까지 들어가게 되는데
'1'의 주소값은 널문자가 없어서 그런 것 아닐까 싶네요
&p 는 char*가 되는데 이는 C++에서 C스타일 문자열로 인식하게됩니다.
C스타일 문자열은 필연적으로 null문자가 끝에 붙게 되는데, p는 문자열이 아닌 char형이기 때문에 뒤에 null문자가 보장되지 않죠.
아! 답변감사합니다!!
댓글을 작성하려면 로그인해야 합니다.
qhrrkfl2 7년 전
string a;
char *p = "1";
a.append(p+0);
cout << a << endl;
이렇게 하면 1이 출력됨.
string a;
char p = '1';
a.append(&p);
cout << a << endl;
1쓰래기값입력N 이 출력됨.
왜죠??!?!?!?!?!?