|
: 처음 func()를 호출하면.. Edit1에 abc라고 출력한다음에 str의 문자열의 첫번째 문자를 'z'로 바꾸게 되니깐. 두번째 func()를 호출 하면 zbc라고 나오죠..
:
: 이건 배열과 포인터가 같은 주소공간을 가르키고 있다는 설명을 하는겁니다.
: 다시 말해서 *str 이랑 str[0] 동일한 주소공간을 가르키는 거구요
: *(str + 1) , str[1] 하고 같고
: *(str + 2), str[2] 하고 같다는 말이죠..
:
: 다시말하면 str 이란 변수에는 abc문자열의 첫번째 문자 'a'가 저장된 위치의 주소값을 가지고 있는겁니다.
: str + 1 은 주소값을 1 증가 시키는 결과니깐 'b'문자의 주소값이 되는거죠.
영준님께서 말씀하신것 중에 이상한 점은
분명 다음 func()를 콜 하면 다시 변수를 선언 한다는것이죠...
char *str = "abc";
다시 abc가 되야 맞는 말입니다... 다만 현재 static변수처럼 행동하고 있다는것이 문제 이지요...
영준님께서 설명하신 포인터 연산하고는 약간 다른 문제가 아닌가요??
|