본문 바로가기
C 언어

c 언어[020] 포인터 변수(메모리 주소를 가리키는 변수)

by Smart Factory in 2020 2021. 9. 28.
728x90
반응형

안녕하세요. 스마트 팩토리입니다. 
c 언어[020] 포인터 변수(메모리 주소를 가리키는 변수)에 대해 알아보겠습니다 

1. 포인터 변수 

가.포인터 변수

- 프로그래밍 언어에서 변수 혹은 그 변수 메모리 공간 주소를 가리키는 변수 
- 포인터 변수 값은 메모리 공간 주소값을 가지고 있다. 
- *아스테리크를 표시하여 포인터 변수를 나타낸다. 
- 메모리의 주소값을 가지는 변수

 나. 포인터 변수 선언

- 자료형* 포인터 변수이름;
- int * a;

(가) 포인터 변수 예시

 

int num= 10;  
int* ptr;
ptr = #

포인터 변수 ptr 은 *ptr로 나타냅니다. 

ptr은 변수 로 주소값으로 지정해야 합니다. 그래서 ptr=&num 이는 &num은 int 변수 num의 주소값을 의미합니다. 즉 번지수를 의미합니다. 

printf("%d", ptr)   ;  

ptr의 주소값을 10진수로 출력합니다. 

printf("%x" ,ptr);

ptr의 주소값을  16진수로 출력

printf("%p" ,ptr);

ptr의 주소값을  16진수로 출력

  printf("%d",*ptr) 

포인터 변수 값 즉 주소값(변지수)이 가리키는 실제값을 출력함.( -->10출력)

#include<stdio.h>
int main() {
int num= 10;
int* ptr;
ptr = &num;

printf(" num 값은 %d\n", num);
printf(" num 값은 %p\n", num);
printf("num 주소값 %d\n", &num);
printf("num 주소값 %p\n", &num);
printf("num 주소값 %x\n", &num);

printf("ptr 값 %d \n", ptr);
printf("prt 주소값이 가리키는 실제 값 %d\n", *ptr);


}

(나) 포인터 변수로 실제값을 변경하는 경우 

 

*ptr = 100; 

포인터 변수의 주소값이 가리키는 실제값을 변경하면  일반변수 num 값이 변경됩니다. (주소값을 num의 번지수로 지정했기 때문에)

 

#include<stdio.h>
int main() {
int num= 10;
int* ptr;
ptr = &num;

printf(" num 값은 %d\n", num);
printf(" num 값은 %p\n", num);
printf("num 주소값 %d\n", &num);
printf("num 주소값 %p\n", &num);
printf("num 주소값 %x\n", &num);

printf("ptr 값 %d \n", ptr);
printf("prt 주소값이 가리키는 실제 값 %d\n", *ptr);
*ptr = 100;
printf("prt 주소값이 가리키는 실제 값 %d\n", *ptr);
printf(" num 값은 %d\n", num);

}

 

(다) 일반변수 값을 변경하면 포인터 변수가 가리키는 실제값도 변경

num = 200; 일반변수 값을 변경하면 

그것을 번지수로 하고 있는 포인터 변수의 실제값도 변경됩니다. 

 

#include<stdio.h>
int main() {
int num= 10;
int* ptr;
ptr = &num;

printf(" num 값은 %d\n", num);
printf(" num 값은 %p\n", num);
printf("num 주소값 %d\n", &num);
printf("num 주소값 %p\n", &num);
printf("num 주소값 %x\n", &num);

printf("ptr 값 %d \n", ptr);
printf("prt 주소값이 가리키는 실제 값 %d\n", *ptr);
*ptr = 100;
printf("prt 주소값이 가리키는 실제 값 %d\n", *ptr);
printf(" num 값은 %d\n", num);

num = 200;

printf("prt 주소값이 가리키는 실제 값 %d\n", *ptr);
printf(" num 값은 %d\n", num);

}

 

728x90
반응형

댓글