배열과 포인터의 관계 이해하기: C언어의 핵심 개념
배열과 포인터의 관계 이해하기: C언어의 핵심 개념
✅ 오늘의 핵심 메시지
배열과 포인터는 “사실상 같은 개념”입니다. 주소 기반으로 데이터를 다루는 능력이 핵심입니다.
✅ 오늘의 목표
배열과 포인터의 관계 이해, 포인터로 배열 접근하기, 포인터 연산(pointer arithmetic) 이해하기.
???? 배열과 포인터 관계
int arr[3] = {10, 20, 30};
이때 arr == &arr[0]. 배열 이름 자체가 “첫 번째 요소의 주소”입니다.
???? 포인터로 배열 접근하기
#include <stdio.h>
int main() {
int arr[3] = {10, 20, 30};
int *p = arr; // 배열 주소 저장
printf("%d
", *p); // 10
printf("%d
", *(p+1)); // 20
printf("%d
", *(p+2)); // 30
return 0;
}
???? 핵심 개념
표현
의미
arr[i] - 배열 방식
*(p+i) - 포인터 방식
둘은 동일합니다.
???? 반복문 + 포인터
#include <stdio.h>
int main() {
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
for (int i = 0; i < 5; i++) {
printf("%d ", *(p + i));
}
return 0;
}
???? 포인터로 값 변경
#include <stdio.h>
int main() {
int arr[3] = {10, 20, 30};
int *p = arr;
*(p + 1) = 99; // arr[1] 변경
printf("%d
", arr[1]); // 99
return 0;
}
???? 포인터 이동
#include <stdio.h>
int main() {
int arr[3] = {10, 20, 30};
int *p = arr;
p++; // 다음 요소로 이동
printf("%d
", *p); // 20
return 0;
}
???? 포인터 연산 원리
p + 1은 단순히 1이 아니라 자료형 크기(int = 4바이트)만큼 이동, 자동 계산됩니다.
???? 배열을 함수로 처리 (포인터 기반)
#include <stdio.h>
void printArray(int *p, int size) {
for (int i = 0; i < size; i++) {
printf("%d ", *(p + i));
}
}
int main() {
int arr[4] = {5, 10, 15, 20};
printArray(arr, 4);
return 0;
}
???? 핵심 이해
함수에서 배열은 포인터로 처리됩니다. 결국 같은 개념입니다.
⚠️ 자주 하는 실수
❌ 포인터 범위 초과 *(p + 10) // 위험. 배열 크기 벗어나면 오류 발생.
???? 퀴즈
다음 코드의 결과는 무엇일까요?
int arr[3] = {1, 2, 3};
int *p = arr;
printf("%d", *(p + 2));
A) 1, B) 2, C) 3, D) 오류
정답은? C번 (3)
???? 오늘 정리
배열 이름은 주소입니다. 포인터로 배열 접근이 가능합니다. 포인터 연산으로 데이터 이동이 가능합니다.
???? 배열 + 포인터 = C언어 핵심 구조 완성
✏️ 오늘의 미션: 1️⃣ 포인터로 배열 전체를 출력해 보세요. 2️⃣ 포인터를 이용해 배열 값을 모두 2배로 바꿔 보세요. 3️⃣ 배열의 최대값을 포인터로 찾아보세요.
워크넷(공공일자리 · 취업지원)에서는 다양한 취업 정보를 제공합니다. 기업 광고를 통해 더 많은 기회를 만나보세요.
글제목
#C언어 #코딩 #프로그래밍 #배열 #포인터 #포인터연산 #코딩학원 #프로그래밍기초 #취업지원 #워크넷
배열과 포인터의 관계
배열과 포인터는 동일한 개념으로, 메모리 주소를 통해 데이터를 다룹니다.
- 이전글은퇴 후 기술 교육으로 제2의 인생을 설계하자 26.08.03
- 다음글2026년 5월 주요 일정 및 경제 동향 분석 26.08.03
등록된 댓글이 없습니다.
