글 수 162
여태까지 그냥 그림을 그려보면서 이해했는데, 정확한 정의를 모르겠네요 ...
이번에 보여주신 코드를 보면서, 저런걸 역참조라고 하는거구나 느꼈습니다.
*** 역참조의 정확한 정의를 알고 싶습니다 ***
가령 예를 들어서
struct node{
int data;
struct node *link;
};
typedef struct node Stack;
void Push(Stack **top, int data){
~~~~~
}
int main(void){
Stack *top = NULL;
Push(&top, 10);
return 0;
}
위와 같은 코드가 있다고 가정을 하겠습니다.
그렇다면, 지금 역참조가 이루어지고 있는 부분은 Push 부분에서 인자로 넘기고 있는 &top에서 일어나는 것인가요?
아니면 Push 부분에서 이중 포인터로 인자를 받는 Stack **top 부분에서 이루어지고 있는 것인가요?
**** 한 번 역참조의 정확한 정의 **** 를 알려주셨으면 합니다.
-----------------------------
그리고 너무 기쁩니다 ㅋ
주변에 제가 공부하는 부분을 공부하시는 분들이 없어서 홀로 고독과 싸워야 했는데,
이렇게 좋은 커뮤니티가 있을줄이야 몰랐고, 완전히 사막에서 오아시스를 발견한 기분입니다.
역참조는 포인터 변수의 값인 주소에 들어가 있는 값을 가져오는 것을 말합니다. 문법적으로는 포인터 변수 앞에 (*) 붙으면 역참조가 되는 것이죠.
int a=1, b;
int *p=&a;
b = *p;
위 코드에서 마지막 라인에 '*p'가 포인터 변수 p에 대한 역참조를 나타냅니다.
2차원 포인터 변수 경우는 한번 역참조(*)를 해도 메모리 번지가 값으로 나오고, 역참조를 두번(**)하면 실제 값이 나오죠.