-
카테고리
-
세부 분야
프로그래밍 언어
-
해결 여부
미해결
포인터 연산자...에 대해 질문있습니다~~!
21.03.12 21:52 작성 조회수 171
0
안녕하세요~
포인터 강의 듣던 중 옳게 이해한게 맞나 궁금하여 질문드립니다!
int a = 7;
int* ptr = &a; >> Line2
*ptr = 8; >> Line3
여기서 Line2에서 사용한 * 과 Line3에서 사용한 *은 차이가 있는거같은데 명확하게 설명하라하면 못하겠네요;;
Line3에서 사용한 *는 간접참조(역참조) 를 수행하는 '연산자' 라면
Line2에서 사용한 *은 마치 자료형처럼 쓰는건가요?
무슨 차이인지 궁금합니다~
답변을 작성해보세요.
1
김경민
2021.03.12
안녕하세요! 잘 이해하고 계신 것 같습니다.
다시 설명드리자면 Line3의
*ptr = 8;
* 은 간접 참조 연산자가 맞습니다.
이 간접 참조 연산자를 사용하려면, 피연산자가 포인터 변수여야 하고,
Line2에서 사용한 *는 포인터 변수를 만드는 역할입니다.
// 띄어쓰기에 상관 없이 모두 동일한 선언입니다.
int* ptr;
int * ptr;
int *ptr;
추가로, 포인터 변수의 크기는 동일 운영체제 하에서 모두 같습니다.
(32bit OS: 4byte, 64bit OS: 8byte)
int* i_ptr;
double* d_ptr;
printf(sizeof(i_ptr)); // 8 (64bit OS 기준)
printf(sizeof(d_ptr)); // 8 (64bit OS 기준)
선언 시 *를 두번 붙이면 이중 포인터가 됩니다.
(세번, 네번 사용하여 삼중포인터, 사중포인터도 가능합니다.)
int** double_pointer;
답변 2