반응형
✅ C언어 포인터(Pointer) 완전 정복! 메모리 주소와 참조를 한 번에 이해하자
C언어에서 가장 강력하면서도 어려운 개념 중 하나인 포인터(Pointer).
포인터를 이해하면 함수, 배열, 구조체, 동적 메모리 할당까지 훨씬 수월해집니다.
이번 강의에서는 포인터의 개념, 선언 및 사용법, 주소 연산자와 참조 연산자까지 C언어 포인터의 기초를 쉽고 명확하게 배워봅니다.
📌 포인터(Pointer)란?
포인터란, 변수의 "메모리 주소"를 저장하는 변수입니다.
일반 변수는 **값(value)**을 저장하지만,
포인터는 **그 값이 저장된 주소(address)**를 저장합니다.
🧠 왜 포인터를 배워야 할까?
- 메모리 제어 가능
- 배열/문자열과 밀접한 관계
- 함수에서 변수값을 직접 수정 (Call by Reference)
- 동적 메모리 할당 필수 개념
🛠 포인터 선언 방법
int *ptr;
✅ ptr은 int형 데이터를 가리키는 포인터
✅ *는 “포인터 변수”임을 나타냄
📍 주소 연산자 & 사용법
변수의 메모리 주소를 얻을 때 사용합니다.
int a = 10;
printf("%p\n", &a); // a의 주소 출력
📥 포인터에 주소 저장하기
int a = 10;
int *p; p = &a;
✅ p는 a의 주소를 저장 → p는 a를 가리킨다
📤 참조 연산자 * 사용법
포인터가 가리키는 주소에 저장된 실제 값을 사용하거나 변경할 때 사용합니다.
printf("%d\n", *p); // a의 값인 10 출력 *p = 20; // a의 값이 20으로 변경됨
🔍 예제 코드: 포인터의 기본 사용
#include <stdio.h>
int main()
{
int a = 10;
int *p = &a;
printf("a의 값: %d\n", a);
printf("a의 주소: %p\n", &a);
printf("p가 가리키는 값: %d\n", *p);
*p = 30;
printf("변경된 a의 값: %d\n", a);
return 0;
}
❗ 포인터 사용 시 주의할 점
- 포인터 초기화하지 않고 사용하면 쓰레기값 참조
- NULL 포인터(int *p = NULL;)를 활용해 초기화 습관
- 잘못된 주소를 참조하면 프로그램이 크래시
🎯 실습 과제
- 두 변수의 값을 포인터를 이용해 서로 바꾸기 (swap 함수)
- 정수 배열을 선언하고 포인터로 순회하며 출력
- 포인터를 사용하여 사용자 입력값 2배로 만들기
📘 주요 키워드 정리
키워드설명
* | 포인터 선언 및 참조 연산자 |
& | 주소 연산자 |
NULL | 포인터 초기화용 값 |
int *ptr | int형 포인터 선언 |
🗣 다음 주 예고: 포인터와 배열의 관계, 그리고 문자열
포인터를 제대로 이해하려면 배열과의 관계도 필수!
다음 주에는 포인터로 배열을 다루는 법,
그리고 문자열(char 배열)을 포인터로 접근하는 법을 배워봅니다.
반응형
'C언어 > C 언어 중급' 카테고리의 다른 글
중급6강_C언어 문자열 함수 완전 정리 – 포인터로 문자열을 자유자재로 다루자! (0) | 2025.04.21 |
---|---|
중급5강_C언어 함수 포인터 완전정복 – 콜백 함수의 핵심 개념 쉽게 배우기! (0) | 2025.04.21 |
중급4강_C언어 포인터 배열과 2차원 배열 완전정복 – 메모리 구조 깊이 파헤치기! (0) | 2025.04.21 |
중급3강_C언어 동적 메모리 할당 완벽 가이드 – malloc부터 free까지 한 번에! (0) | 2025.04.20 |
중급2강_C언어 포인터와 배열, 문자열 완전 이해하기 – 메모리 접근의 핵심 원리! (0) | 2025.04.20 |