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 이 출력됨.


왜죠??!?!?!?!?!?

indioindio   7년 전

char *p = "1"은 널문자까지 들어가게 되는데

'1'의 주소값은 널문자가 없어서 그런 것 아닐까 싶네요

yukariko   7년 전

&p 는 char*가 되는데 이는 C++에서 C스타일 문자열로 인식하게됩니다.

C스타일 문자열은 필연적으로 null문자가 끝에 붙게 되는데, p는 문자열이 아닌 char형이기 때문에 뒤에 null문자가 보장되지 않죠.

qhrrkfl2   7년 전

아! 답변감사합니다!!

댓글을 작성하려면 로그인해야 합니다.