티스토리 뷰

Computer Science/CS50

[CS50 5주차] 2. 포인터

JINSUKUKU 2021. 2. 12. 16:32

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
댓글
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday