티스토리 뷰
2. 포인터
* 를 사용해 그 메모리 주소의 실제 값을 얻어올 수도 있으며, ~의 주소로 이동해달라는 의미를 가진다.
이 연산자를 사용해 포인터 역할을 하는 포인터 변수를 선언할 수 도 있다.
#include <stdio.h>
int main(void)
{
int n = 50;
int *p = &n;
printf("%p\n", p); //0x7ffd9792ee98
printf("%d\n", *p); //50
return 0;
}
첫 번째 출력 함수에서는 형식 지정자 % p를 사용해 포인터 변수 *p 저장된 주소를 출력했다.
두 번째 출력 함수에서는 포인터 변수 *p에 저장된 주소로 이동해서 n에 저장된 값을 형식 지정자 % d를 통해 받아와 출력했다.
즉, 포인터 변수를 사용해 포인터 변수에 저장된 주소를 출력하거나, 포인터 변수가 가리키는 변수의 값을 출력할 수 도 있다는 것을 알 수 있다.
추가 예제
#include <stdio.h>
int main(void){
int num1 = 1234;
int num2 = 4321;
int *p1 = &num1;
int *p2 = &num2;
printf("num1에 저장된 값 : %d\n",num1);
printf("num2에 저장된 값 : %d\n",num2);
printf("p1에 저장된 주소를 통해 가져온 num1의 값 : %d\n",*p1);
printf("p2에 저장된 주소를 통해 가져온 num2의 값 : %d\n",*p2);
printf("p1에 저장된 주소 : %p\n",p1);
printf("p2에 저장된 주소 : %p\n",p2);
return 0;
}
[출처] 부스트코스 | 모두를 위한 컴퓨터 과학(CS50 2019)
'Computer Science > CS50' 카테고리의 다른 글
[CS50 5주차] 6. 메모리 할당과 해제 (0) | 2021.02.12 |
---|---|
[CS50 5주차] 3-5. 문자열 (0) | 2021.02.12 |
[CS50 5주차] 1. 메모리 주소 (0) | 2021.02.12 |
[CS50 4주차] 알고리즘 (0) | 2021.02.12 |
[CS50 3주차] 배열 (0) | 2021.02.12 |
댓글