넵 오브젝트 C로 언어를 처음 공부하는 정시퇴근입니다.
포인터가 뭔지 잘 모르겠어요.....
#import <Foundation/Foundation.h>
int main (int argc, const char * argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int count = 10, x;
int *intPtr; //질문1 -> intPtr란 이름을 가진 변수를 포인터로 사용한다는 이야기지요?
intPtr = &count; //intPtr이란 변수 안에 count변수안에 든 10을 넣는다는 이야긴가요?
x = *intPtr; // x는 intPtr안에 든 값과 같다는 이야긴지요...
NSLog(@"count = %i, x = %i", count, x);
[pool drain];
return 0;
}
결과는 10. 19인데요...
질문이 3가지가 있습니다. 책보다 포인터가 너무 이해가 안되서..이게 한국말인가 싶어요..ㅠ.ㅠ.
int *intPtr; //질문1 -> intPtr란 이름을 가진 변수를 포인터로 사용한다는 이야기지요?
intPtr = &count; //intPtr이란 변수 안에 count변수안에 든 10을 넣는다는 이야긴가요?
x = *intPtr; // x는 intPtr안에 든 값과 같다는 이야긴지요...
막혀서 찾다가 이거라도 이해를 하면 책을 보고 좀 이해할 것 같아요..-_-;;
고수님들 도움 요청 드립니다..ㅠ.ㅠ
intPtr = &count 는 아마 count변수의 주소값을 intPtr에 넣는 뜻일꺼에요
x = *intPtr 은 아마 intPtr이 가리키고 있는 곳의 값을 x에 넣으라는 뜻일꺼에요
참고로 같다는 것은 == 이렇게 이퀄을 2개 붙여서 씁니다. 모든 언어에서 다 그런건 아니구요
확실하지는 않습니다. 저도 지금 기억이 잘...;
포인터 변수는 그 메모리 어딘가에 있는 값을 가리키는 변수 이고요.
int count = 10 은 메모리 주소 어딘가에 10을 할당 하게 됩니다
&count 는 그 메모리 주소가 어디냐 하는걸 알수 있고요.
int *intPtr 은 포인터형 변수인데 intPtr 은 그 메모리 주소를 담고 있고
* 를 붙이게 되면 intPtr 메모리 주소에 있는 값을 가리키는 겁니다.
따라서 intPtr = &count 는 intPtr 에 count 의 메모리 주소를 할당 해라 입니다.
결과적으로는 *intPtr 과 count 는 같은 메모리에 있는 값을 불러오게 됩니다.
nslog 로 intPtr 과 &count를 찍어보면 같은 값(메모리주소)를 가지고 있는걸 확인하실수 있습니다.
count = 5 ; 로 할당하고 *intPtr 을 화면에 찍어보게 되면 5로 나옵니다. ( 같은 메모리 주소를 가지고 있으니 당연한 결과 입니다.)
제가 써놓고 뭔말인지 모르겠군요 ㅎㅎㅎㅎ
참고 되셨으면 합니다.