-
포인터 기본프로그래밍/C, C++ 2019. 4. 16. 00:00
포인터
포인터란 다른 변수나 함수를 가리키기 위해 만들어진것이다.
따라서 포인터 변수 안에는 가리키는 것의 주소가 들어있다.아래는 포인터의 아주 간단한 예제다.
#include <stdio.h> int main(){ int a = 10; int *ptr; // 포인터 변수 선언 자료형 * 변수명 ptr = &a; // 포인터에 a의 주소값 대입 printf("a의 주소 : %x\n", &a); printf("ptr안에 든 값 : %x\n", ptr); printf("ptr이 가리키는 것의 값 : %d\n", *ptr); //선언이 아닌 곳에서 *은 포인터가 가리키고 있는 것의 값 return 0; }
실행결과
a의 주소 : 62fe1c
ptr안에 든 값 : 62fe1c
ptr이 가리키는 것의 값 : 10메모리 구조
포인터의 크기
포인터는 모두 주소를 담고기 때문에 포인터변수의 크기는 시스템에 따라 고정적인다.
시스템이 32bit인 경우 4바이트, 64바이트인 경우 8바이트를 가진다.저는 64bit 운영체제를 사용하기 때문에 8바이트가 나오고
컴파일러 설정에 따라 4바이트나 8바이트가 나올겁니다.#include <stdio.h> int main(){ int *iptr; double *dptr; char *cptr; void *vptr; printf("int *의 크기 : %d\ndouble *의 크기 : %d\n", sizeof(iptr), sizeof(dptr)); printf("char *의 크기 : %d\nvoid *의 크기 : %d\n", sizeof(cptr), sizeof(vptr)); // void 포인터는 를 담을 수 있다 -> 사용 시 형변환이 필요하다 }
실행결과
int *의 크기 : 8
double *의 크기 : 8
char *의 크기 : 8
void *의 크기 : 8댓글