티스토리 뷰
728x90
반응형
포인터 정의 및 사용
변수를 선언한다는 것은 변수의 이름을 통해서 메모리공간을 사용하는 것이다.
프로그램을 효율적으로 짜기 위해서는 메모리가 어디에 위치해 있고 얼마나 많은 메모리를 사용해야하는지 알아야 한다.
크기가 큰 프로그램을 만들어서 많은 양의 데이터를 사용하면 많은 양의 데이터를 복사해서 여러 곳에서 사용하는 것은 낭비이다.
이렇게 하면 데이터를 복사하는데 시간도 걸리고 메모리도 낭비된다.
데이터가 어디에 있는지 알고 프로그램을 작성하면 프로그램이 효율적으로 작동할 것이다.
포인터는 메모리 주소를 저장하여 가리키는 간접적으로 역활을 한다.
포인터를 선언해줄 때는 아래와 같이 변수 명 앞에 *를 붙여 사용한다.
int a = 7;
int *a_ptr = &a;
double b = 2;
double *b_ptr = &b;
printf("a variable address is %d\n", a_ptr); // 6487564
printf("b variable address is %d\n", b_ptr); // 6487552
간접 참조 연산자 *
포인터에서 참조된 주소의 값을 가지고 오고 싶을 경우 포인터 변수 앞에 *를 붙여주면 참조된 주소의 값을 가져올 수 있다.
printf("a pointer value is %d\n", *a_ptr); // a pointer value is 7
printf("b pointer value is %.1lf\n", *b_ptr); // b pointer value is 2.0
printf("a pointer is %d byte\n", sizeof(*a_ptr)); // a pointer is 4 byte
printf("b pointer is %d byte\n", sizeof(*b_ptr)); // b pointer is 8 byte
주소 연산자 &
포인터에 주소를 저장하려는 변수명 앞에 &를 붙여 변수의 주소를 불러온다.
&변수명을 사용하여 포인터 변수에 주소를 저장한다.
포인터 변수의 크기는 int로 할당했으면 4byte double로 할당했으면 8byte가 할당된다.
double c = 4;
int *c_ptr = &c;
printf("c pointer value is %f\n", *c_ptr); // c pointer value is 0.000000
// 만약 포인터 변수 타입 크기보다 큰 변수를 할당해주면 값이 0으로 나온다.
int d = 9;
double *d_ptr = &d;
printf("d pointer value is %d\n", *d_ptr); // d pointer value is 9
// 그렇다면 포인터 변수 타입 크기보다 작은 변수를 할당해주면 값이 잘 나오지만 포인터 변수와 이에 할당하려는 변수에 크기를 맞춰주자..
참고로 포인터의 초기값을 설정하지 않는 경우에는 NULL 값으로 초기화 해주는 것이 기본이라고한다.
그 이유는 포인터 값이 NULL인 경우에 예외처리가 수월하기 때문이다.
참조
- 혼자 공부하는 C
- 따배씨
728x90
반응형
'프로그래밍 정보 > C' 카테고리의 다른 글
[C언어]문자열, scanf, gets, fgets로 입력 받기 (0) | 2023.09.05 |
---|---|
[C언어] sizeof 연산자를 활용한 자료형, 배열, 포인터, 이차원 배열 크기 확인하기 (0) | 2023.06.16 |
[C/C++] 1차원 배열과 포인터, 2차원 배열과 포인터 정리 (0) | 2023.05.05 |
[C++] 버퍼와 표준출력 시 endl과 '\n'의 차이 (2) | 2023.04.25 |
250x250
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- JSON
- C
- raspberrypi
- 모닝독서
- Kernel
- QT
- var
- JS
- Linux
- yocto
- CSS
- opencv
- JavaScript
- 미라클모닝
- js syntax
- tailwindcss
- 포인터
- 20.03.11.(목)
- Til
- NestJS
- 재미있는
- 라즈베리파이
- 초아
- 자바스크립트
- tailwind
- 스타벅스
- Python
- variable
- 오늘의 공부
- SQL
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함