Pointer
: 주소값을 저장하는 변수(변수 : 데이터를 저장하는 메모리 공간) ( 4byte : int와 같은 크기 0~42억 크기)
: * --> [ ] // 모양이 변할지라도 기능은 변하지 않는다.
: 간접변수
: 처리속도가 빠르다(메모리 주소로 다이렉트로 간다.)
포인터의 기능
1. 오직 주소값만 저장할 수 있다.
- 초기화를 제대로 해야한다(데이터 훼손이 발생할 수 있음). 정확한 주소값을 넣어야 한다.
2. 가르키는 데이터를 읽을 수 있다.
3. 가르키는 데이터를 바꿀 수 있다.
4. 주소이동을 할 수 있다.
- 포인터는 1대 1 방식, 주소 이동 = 초기화
: 가르키는 대상(데이터 타입)에 따라서 포인터의 모양이 바뀐다.
포인터 변수 선언
가르키는 타입 *변수명
포인터변수명 = 가르키고자하는 변수의 주소값; // 초기화
포인터의 표기법
#include<stdio.h>
int main()
{
int a = 10;
int b = 20;
// 포인터 변수 선언
int* p = NULL; // NULL pointer
p = &a; // 1. 주소 초기화
// 2. 가르키는 데이터를 읽을 수 있다.
printf("%d \t %d \t %d\n", a, *p, p[0]);
// *p, p[0] = 가르키는 값
printf("%d \t %d \t %d\n", &a, p, &p);
// p = 가르키는 주소값, &p = 포인터의 주소값
// 3. 가르키는 데이터를 바꿀 수 있다.
p[0] = 50; // *p = 50; // a = 50;
printf("%d \t %d \t %d\n", a, *p, p[0]);
// 주소이동
p = &b; // 주소를 b로 초기화
printf("%d \t %d \t %d\n", a, *p, p[0]);
}
반응형
'C언어 > C' 카테고리의 다른 글
C언어 공부 정리6(동적 메모리) (0) | 2020.11.30 |
---|---|
C언어 공부 정리5(구조체) (0) | 2020.11.27 |
C언어 공부 정리4(다차원 포인터) (0) | 2020.11.26 |
C언어 공부정리2(배열의 주소값) (0) | 2020.11.24 |
C언어 공부 정리1 (0) | 2020.11.23 |