포인터(기초)

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
admin