char *str = "test";
char *a= "st"
char *b = strstr(str,"st"); // 결과는 st 나옴.
int pos1 = a - str; // 5
int pos2 = b - str; // 2
test안에서 st 서브문자열 위치 리턴하는건데
둘다 스트링 리터럴인건 알겠는데 그렇다면 왜 strstr을 한것만 올바른 값이 나오는거지??
왜 쌩으로 "st"값 집어넣고 빼면 5라는 이상한 값이 나옴?
char *str = "test";
char *a= "st"
char *b = strstr(str,"st"); // 결과는 st 나옴.
int pos1 = a - str; // 5
int pos2 = b - str; // 2
test안에서 st 서브문자열 위치 리턴하는건데
둘다 스트링 리터럴인건 알겠는데 그렇다면 왜 strstr을 한것만 올바른 값이 나오는거지??
왜 쌩으로 "st"값 집어넣고 빼면 5라는 이상한 값이 나옴?
b는 test에서 st 위치를 찾아서 그 번지수를 리턴해준거고 a는 그냥 따로 st라서
test라는 문자열이 메모리 어딘가 처박혀있겠지 a에 할당된st도 다른곳에 있을테고
포인터 연산
https://youtu.be/cNSYf266BHE
- dc App
t e s t \0 s t가 메모리에 연속으로 올라오고 str이 t의 주소 a가 두번째 s
아 연속으로 올라가는군
그럼 b는 두번째 test의 s를 가르킴?