티스토리 뷰

C

포인터

parkrams 2024. 1. 28. 13:13
728x90
  • 포인터는 주소의 값을 저장하는 변수
  • p 라는 포인터가 int 데이터라를 기리키고 싶다면 - > int* p 로 선언. 이는 int형 데이터의 주소값을 가진 p 라는 뜻
  • 포인터에 주소값을 집어 넣는 단항 & 연산자 -> 1개의 피 연산자 필요
    • 앰퍼샌드(Ampersand) 연산자, 주소 연산자
    • ex )
int* p;
int a = 5;
p = &a; // int a 변수의 주소 값을 저장한다 

printf("*p 는  : %d" , *p ) //p안에 저장된 주소안에서 값을 불러 온다. 
                            // 이 경우 p의 주소값 안에 저장된 값을 불러 왔기 때문에 a랑 똑같은 정수 5 가 출력 된다

printf("a의 주소 값은 : %p", &a); // a의 주소값을 불러온다.
printf("p의 주소 값은 : %p", &p); // a의 주소값을 불러온다.  
                            // p도 변수로 주소값을 가지므로, a와 다른 주소값이 출력되는걸 확인 할 수 있다.

단항 *연산자로  ( 역참조(derefernece) ) 포인터가 참조하고 있는 주소에 있는 데이터의 값을 바꿀 수 있다.

//피를 역참조 해서 3을 대입한다.
*p = 3;
printf("a의 값은 : %d", a);   // 이렇게 출력하면 a 가 3이 출력 되는 것을 알 수 있다.

최종

  • int a = 5;
  • int* p        →    포인터 변수 p 선언
  • p = &a      →    a의 주소를 p에 저장한다.
  • *p = 3       →    p를 역참조 해서 3을 저장한
728x90
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/07   »
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
글 보관함