SH1R0_HACKER

C언어 :: 포인터 정리(1) - 포인터란? 본문

Programming Language/C

C언어 :: 포인터 정리(1) - 포인터란?

SH1R0_HACKER 2021. 1. 16. 13:53
// 포인터 정리(1)
// 포인터 (pointer) : 변수의 주소를 저장하는 변수

#include <stdio.h>

void example1();
void example2();
void example3();
void example4();

int main() {
	printf("예제 1번\n");
	example1();
	printf("\n");
	printf("예제 2번\n");
	example2();
	printf("\n");
	printf("예제 3번\n");
	example3();
	printf("\n");
	printf("예제 4번\n");
	example4();
	printf("\n");
}

void example1() {
	int a = 20;

	int* ptr;	// 포인터 변수 선언 (자료형 *포인터변수)
	ptr = &a;	// ptr에 a의 주소값 저장

	printf("a의 값 : %d\n", a);	// 20
	printf("a의 주소값 : %d\n", &a);	// a의 주소값
	printf("ptr에 저장된 값 : %d\n", ptr);	// ptr의 값 = a의 주소값
	printf("ptr가 가리키는 변수의 값 : %d\n", *ptr);	// *ptr = a = 20
}

void example2() {
	int a = 10;
	int b = 20;

	int* ptr;	// 포인터 변수 선언
	ptr = &a;	// a의 주소값 대입
	printf("ptr이 가리키는 변수에 저장된 값 : %d\n", *ptr);	// *ptr = a = 10

	ptr = &b;	// b의 주소값 대입
	printf("ptr이 가리키는 변수에 저장된 값 : %d\n", *ptr);	// *ptr = b = 20
}

void example3() {
	int a = 10;

	int* ptr;	// 포인터 변수 선언
	ptr = &a;	// a의 주소값 대입

	printf("a의 값 : %d\n", a);	// 10

	*ptr = 20;	// a = 20 이랑 동일

	printf("a의 값 : %d\n", a);	// 20
}

void example4() {	// 더블포인터
	int a = 10;

	int* ptr;	// 포인터 변수 선언
	ptr = &a;	// a의 주소값 대입

	int** double_ptr;	// 더블포인터 변수 선언 (포인터를 가리키는 포인터)
	double_ptr = &ptr;	// ptr의 주소값 대입

	printf("a = %d\n", a);	// a의 값 = 10
	printf("&a = %d\n\n", &a);	// a의 주소값

	printf("ptr = %d\n", ptr);	// ptr의 값 = a의 주소값
	printf("&ptr = %d\n", &ptr);	// ptr의 주소값
	printf("*ptr = %d\n\n", *ptr);	// *ptr = a = 10

	printf("double_ptr = %d\n", double_ptr);	// double_ptr의 값 = ptr의 주소값
	printf("&double_ptr = %d\n", &double_ptr);	// double_ptr의 주소값
	printf("*double_ptr = %d\n", *double_ptr);	// *double_ptr = ptr의 값 = a의 주소값
	printf("**double_ptr = %d\n\n\n", **double_ptr); // **double_ptr = *(*double_ptr) = *ptr = 10

	printf("%d %d %d\n", a, *ptr, **double_ptr);	// 10 10 10
	printf("%d %d %d\n", &a, ptr, *double_ptr);	// a의 주소값 출력
	printf("%d %d\n", &ptr, double_ptr);	//ptr의 주소값 출력
}

 

'Programming Language > C' 카테고리의 다른 글

C언어 :: 포인터 문제 (2)  (0) 2021.01.16
C언어 :: 포인터 정리 (2) - 배열과 포인터의 관계  (0) 2021.01.16
C언어 :: 포인터 문제 (1)  (0) 2021.01.16
버블 정렬 (bubble sort)  (0) 2020.10.18
EOF (END-OF-FILE)  (0) 2020.10.18