포인터에 대해서...
아잉
-
이퓨리한나
으음..답변 감사합ㄴㅣ다~!
-
꽃짱아
수다님 설명에 문제는 1차원 포인터를 2차원 포인터처럼 사용하기때문에 문제가 됩니다.
q가 2차원 포인터이고 1차원 포인터를 가르킨다음에 *q = &j를 하게되면 문장이 성립되지만
1차원 포인터이면서 *q = &j를 하게되면 배정연산자에 자료형이 맞지않아 warning이 발생합니다.
warning은 큰 문제가 되지 않을수 있지만 pointer 연산은 주소를 참조하기때문에
엄청난 risk가 발생할 수 있습니다. -
Addicted
int *q; == q pointer를 초기화를 하지 않아서.. q에는 쓰레기 값이 들어갑니다.
*q = &j == 이 말은 q가 가리키는 메모리 공간에 j의 주소를 넣어라 인데.. 실제 q가 가리키는 것은 쓰레기 값이기 때문에.. 쓰레기 값이 지정하는 공간에 j의 주소를 넣는 것입니다.. 그런데 대부분의 쓰레기 값은 실제 Process가 접근 할 수 없는 공간이기 때문에 *q = &j를 하게 되면 Access Denided가 발생합니다.
만일
int -
후회중
q = &j는 포인터 변수에 포인터를 참조하겠다는 문장이므로 참이됩니다.
-
하늘빛눈망울
q는 포인터 변수로 담을수 있는 자료는 주소 값입니다.
&j를 하게되면 주소값을 리턴하게 되는데 *q 를 하게되면 포인터의 역참조를 하게되므로
q가 가르키는 주소에 &j를 넣겠다는 문장이 됩니다. -
핫파랑
아아...그건 알고 있는데 정확한 이유 설명이...어떻게 되는지 몰라서 ㅎ
-
늘솔길
q = &i; 로 하셔야합니다.
-
푸헷
* 연산자는 저장한 메모리의 실제 값을 참조할 때 쓰여요.
*q = 10;
printf(\%d \\n\