C언어
C언어 - 포인터 (Pointer) : 포인터 & 주소
깅햄찌
2022. 9. 9. 22:49
반응형
안녕하세요! 오늘은 포인터와 주소에 대해 알아보겠습니다.
가장 큰 차이점은 주소는 상수라서 값이 바뀔 수 없고
포인터는 변수라서 포인터의 값을 바꿀 수 있습니다.
아래 코드로 포인터의 값을 바꾸어 보고 빌드가 잘 되는지 확인해보았습니다.
#include <stdio.h>
int main(){
int temp1,temp2;
int* temp_pointer;
temp_pointer = &temp1;
temp_pointer = &temp2;
return 0;
}
빌드가 잘되었네요~~
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/014.gif)
두 번째 차이점은 주소의 크기와 포인터의 크기는 8byte 고정(64bit)이지만
포인터가 가리키는 변수의 크기는 할당된 자료형에 따라 가변적입니다!!
#include <stdio.h>
int main(){
char temp_ch;
int temp_int;
double temp_db;
char* temp_pointer_ch = &temp_ch;
int* temp_pointer_int = &temp_int;
double* temp_pointer_db = &temp_db;
printf("address \n %d\n", sizeof(&temp_ch));
printf("%d\n", sizeof(&temp_int));
printf("%d\n", sizeof(&temp_db));
printf("pointer \n%d\n", sizeof(temp_pointer_ch));
printf("%d\n", sizeof(temp_pointer_int));
printf("%d\n", sizeof(temp_pointer_db));
printf("value that pointer points \n%d\n", sizeof(*temp_pointer_ch));
printf("%d\n", sizeof(*temp_pointer_int));
printf("%d\n", sizeof(*temp_pointer_db));
return 0;
}
아래 그림과 같이 주소와 포인터의 크기는 8byte 지만 포인터가 가리키는 변수값은
char형 : 1byte, int형 : 4byte, double형 : 8byte인것을 확인할 수 있었습니다.
지금까지 포인터와 주소에 대해 알아보았는데요.
다음 포스팅으로는 포인터를 사용하는 이유에 대해 알아보고자 합니다.
그럼 다음에 봐요~ 좋은 하루 보내세요!!
![](https://t1.daumcdn.net/keditor/emoticon/friends1/large/006.gif)