포인터에 주소값 저장하면
int *ptr = 주소
이 순간부터 가리키는거임?
아니면 역참조 연산자 이용해서
*ptr 했을때 대상 주소 접근해서 값 가져오는 개념임?
내가 생각했을때 전자가 맞을지 몰라도 실질적으로 가리키지도 않고 포인터 주소 대입할때 그냥 주소만 대입되고 역참조 연산했을때 실질적인 연산이 이루어 지기 때문에 후자가 이해하기 쉽고 명확한 표현이라 생각하는데 말야
가리킨다는 표현 써가지고 입문자들 헷갈리게 만드는지
int *ptr = 주소
이 순간부터 가리키는거임?
아니면 역참조 연산자 이용해서
*ptr 했을때 대상 주소 접근해서 값 가져오는 개념임?
내가 생각했을때 전자가 맞을지 몰라도 실질적으로 가리키지도 않고 포인터 주소 대입할때 그냥 주소만 대입되고 역참조 연산했을때 실질적인 연산이 이루어 지기 때문에 후자가 이해하기 쉽고 명확한 표현이라 생각하는데 말야
가리킨다는 표현 써가지고 입문자들 헷갈리게 만드는지
int *ptr = 주소가아니라 ptr = 주소겟지 .. 그리고 *ptr할때 역참조가 일어난다고 봐야지 ptr에는 그냥 주소만들어잇음
int *ptr보다는 int* ptr이렇게 해야 사실 이해하기 명확한데 왜 int *ptr 이런식으로 쓰는건지 모르겟는 1인
근데 knk 이런거 보면 초기화 하는 순간부터 가리킨다는 표현 쓰던데 난 이게 처음배울때 너무 헷갈렸음 주소만 저장됐는데 뭘 가리킨다는건지
가리킨다는건 두 변수가 연결된 상태 즉 바인딩 됐다는건데 그럼 연산없이도 ptr통해 접근 가능해야 되는데 역참조같은 추가연산이 필요하니..
ddd// int *ptr 은 "선언"이잖아. int* ptr로 짜다보면 오히려 ptr이 포인터변수인지 애매할 수 있음. int* ptr1, ptr2; 이런거보다 int *ptr1, *ptr2; 이게 훨씬 명확하니까.
한줄에 한개씩 쓰면 뭐라 써도 전혀 관계없는데, 보통은 2개 이상씩 쓸때가 많고, 원래의 변수를 같이 선언하는 일이 많으니까 후자가 더 명확한거임.
난 참고로 함수 선언은 또 다르게 쓴다. int* abc() 이런식으로. int *abc() 이렇게 쓰면 뜻이 이상해지거든.