char *str = "test";
char *a= "st"
char *b = strstr(str,"st"); // 결과는 st 나옴.
int pos1 = a - str; // 5
int pos2 = b - str; // 2
하려는건 str에서 서브문자열의 위치를 출력하려는건데
이거 보면 a,b둘다 프린트 찍어보면 st나오거든?
근데 pos1은 5나오고 pos2는 2가 나옴...
a,b 둘다 같은값인데 왜 저렇게 되는걸까??
char *str = "test";
char *a= "st"
char *b = strstr(str,"st"); // 결과는 st 나옴.
int pos1 = a - str; // 5
int pos2 = b - str; // 2
하려는건 str에서 서브문자열의 위치를 출력하려는건데
이거 보면 a,b둘다 프린트 찍어보면 st나오거든?
근데 pos1은 5나오고 pos2는 2가 나옴...
a,b 둘다 같은값인데 왜 저렇게 되는걸까??
string literal 이라서 그렇다. string 과 string literal 의 차이에 관해서 찾아보도록 하여라 - return 0;
좀 찾아봤는데 a가 리터럴이고 b가 그냥 스트링인거지?? 와 근데 형 진짜 개많이 아네 ㄷㄷ
아니 둘다 리터럴인데 - return 0;
그리고 이건 내가 많이 아는게 아니라 정상적으로 C 를 배운 사람이라면 다 아는거야 - return 0;
엥??? 다 리터럴이면 pos1과 pos2가 같아야 되잖아? 다른 이유가 더 있는거야?
내가 산 책에는 없었음...
1. b랑 찾은 st 의 리터럴이 다른 리터럴이니까 내용물이 같은데도 위치가 다르지 2. 그 책을 버려라 막 윤성우 열혈 이딴거 산거냐 - return 0;
와 진짜 큰 깨달음을 얻고간다. 댓글추천이 시급하네. 윤성우 열혈 보고있음 ㅇㅇ
C Primer Plus 를 봐라 - return 0;
pos1 꼭 5 나온다는 보장 없는 거 맞제?
그럴듯 함 - return 0;
오늘도 피해자가 속출
메모리 레이아웃과 문자열
https://youtu.be/htL2IKDtmV8
- dc App