Computer Science/C\C++

[C언어] 포인터 개념

hyunjin 2021. 5. 10. 12:06

메모리의 주소체계

하나의 주소 값은 1바이트 단위로 할당.

 

변수와 메모리

char형 : 1byte

short형 : 2byte

int형 : 4byte

float형 : 4byte

double형 : 8byte

 

포인터 : 주소를 가지고 있는 변수

-포인터 변수와 함께 사용하는 연산자

&: 변수의 주소값을 나타냄(주소 값 가져올때 제일 첫번째 바이트의 주소값을 가져옴)

*: 포인터가 가리키는 메모리 참조


포인터 기본규칙

▷포인터 변수 선언할때  변수의 자료형과 같아야함

▷포인터는 가리키는 대상의 크기와 상관없이 4바이트로 선언됨.

 

TYPE val;

TYPE * ptr;

ptr = &val;//변수의 주소 저장

(TYPE * ptr = &val;//선언 동시에 초기화 가능)

*연산자(간접 참조 연산자)

int main(void)
{
	int num=10;
	int* pnum = #
	*pnum=20;
	printf("%d", *pnum);
}

여기서 *pnum은 num의미함.


포인터 변수도 값의 변경 허용

-값을 서로 바꾸거나 할때 사용가능

 

NULL포인터와 포인터 형변환

초기화해주지 않으면 변수들이 쓰레기값을 갖고있음.

널 포인터는 상수 0

안전성 위해 포인터 변수는 NULL로 초기화.