포인터(기초)
Programming/C 2015. 6. 3. 15:08
포인터 - 주소값을 저장하는 변수
(모든 운영체제 속 메모리에 있는 변수들은 주소값을 가지고 있다. )
* : 간접 참조 연산자, 포인터 연산자 이다. 포인터가 가진 주소값에 해당하는 변수를 의미한다. & : 주소 연산자이다. 해당 변수의 주소를 가리킨다.
#define NULL 모든 포인터는 항상 사용하기 전에 NULL 포인터를 사용하는 것이 좋다. ( 안에 쓰레기 값이 들어있기 때문이다. )
int *a 운영체제로부터 메모리공간 어딘가에 자료형에 상관없이 4바이트 만큼의 공간을 할당받아 그 주소 위에 a라는 방을 만들고 그 안에는 쓰레기 주소값이 들어있다. ( 32byte 기준 )
// 주소 하나를 저장하는 크기가 4byte라서 자료형에 상관없이 4byte만큼이다. // 자료형은 왜 필요할까 - 해당 자료형은 4byte 내에서 포인터가 이동하는데 필요하기 때문이다.
void * - 모든 자료형이 될 수 있는 포인터이다.(형태가 정해지지 않은 포인터 )
- 포인터는 - 연산만 가능하다 ( + 등 다른 연산자를 사용하면 전혀 다른 주소값을 뱉을 수 있어서 )
- 포인터는 할당할 떄 메모리 공간 어딘가에 생기는 주소와 , 포인터에서 지정해주는 주소가 다르다.
* : 누가살아 & : 어디살아
1. const int *a = &b; - *a의 상수화는 변수의 상수화라는 말이다. a의 주소값은 변경이 가능하다.
2. int *const a a= &b; - a의 상수화되는 것은 주소값은 상수화, *a의 값은 변경이 가능하다. |
'Programming > C' 카테고리의 다른 글
(2) 프로그램 구성 요소 (0) | 2015.09.15 |
---|---|
(1) 컴파일러 (0) | 2015.09.15 |
memset() (0) | 2015.05.16 |
02_ 파일 입출력 (0) | 2015.05.04 |
01_파일 입출력 (0) | 2015.05.04 |