본문으로 바로가기

C언어 공부정리3(포인터)

category C언어/C 2020. 11. 25. 10:44

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