|
자세한 것을 알고 싶으시면 어셈블러와 하드웨어에 대한 이해가 우선입니다.
애플리케이션 개발자 입장에서는
'포인터는 하나의 데이터 형'으로 생각하시면 됩니다.
int, double, long, usigned, etc.
위의 데이터형에 포인터를 추가로 생각하시면 됩니다.
값을 저장한다는 것에선 같지만, 위의 것들과 다른 점은 데이터가 저장된 주소값을 저장한다는 것 뿐입니다.
int*, double*, TStringList*, TEdit*, etc.
일반 데이터형, class, struct의 주소값을 저장할 수 있습니다.
따라서,
int a = 10;
int *pa = &a; //a의 주소값을 pa에 저장
ShowMessage((AnsiString)*pa);
*pa = 11; //pa가 지정하는 주소인 a에 11를 저장
ShowMessage((AnsiString)a);
막막한초보 님이 쓰신 글 :
: int a = 10;
: int *pa = &a; //int *pa 는 포인터를 선언과 동시에 a의 주소값을 저장
: 이렇게 하는 것과
: int m = 9;
: int *pm = NULL; // 포인터 pa 선의
: pm = &m; //m의 주소값을 pm에 저장
: 이것과 동일한 결과가 맞나요?
동일합니다.
저도 포인터에 대한 이해를 위해 책을 많이 봤지만 힘들었습니다.
'백독이불여일타'입니다.
여러가지 경우에 대한 포인터 예제를 직접 작성해 보시면 쉽게 이해를 하실 수 있습니다.
건승을 빕니다.
: 맞는 다면
: 선언할때 *pa = &a 이라고 해서 주소를 넣는 반변에
: 아래것은 사용할때 pm에 &m의 주소를 넣는 거잖아요.
:
: 결론은 *선언시에는 메모리 주소를 받고
: *를 사용 할때는 값을 받는다.. 이렇게 되는데..
:
: 왜 그런 차이가 나는 거죠???
: 설명을 잘 못해서...질문이 이해가 가시는지..쩝...
: 긴글 읽어 주셔셔 감사하고요.. 혹시 이런 의문을 가져 보신 분들은 답변 부탁 드립니당...^^
|