반응형
✅ C언어 포인터와 배열, 문자열 완전 이해하기 – 메모리 접근의 핵심 원리!
포인터를 이해했다면, 이제 배열과 포인터의 관계, 그리고 **문자열(char 배열)**을 포인터로 다뤄보는 실력을 키울 차례입니다.
이번 강의에서는 C언어의 배열 구조, 포인터 접근 방식, 그리고 문자열 처리 기초까지 꼼꼼하게 다뤄봅니다.
🧠 배열과 포인터는 어떤 관계일까?
C언어에서 배열 이름은 포인터처럼 사용될 수 있습니다.
int arr[3] = {10, 20, 30};
int *p = arr;
printf("%d\n", p[0]); // 10
✅ arr == &arr[0] → 배열 이름은 첫 번째 요소의 주소
✅ p[i] == *(p + i) → 포인터로 배열처럼 접근 가능
📍 포인터를 이용한 배열 순회
int arr[5] = {1, 2, 3, 4, 5};
int *p = arr;
for (int i = 0; i < 5; i++)
{
printf("%d ", *(p + i));
}
✅ 포인터 산술 연산을 활용해 배열 순회
🧵 문자열과 포인터
문자열은 C언어에서 문자 배열로 저장됩니다.
문자열 리터럴은 문자형 포인터로 표현 가능합니다.
char str[ ] = "Hello";
char *p = "World";
표현설명
char str[ ] = "Hello"; | 문자열을 배열에 저장 (수정 가능) |
char *p = "World"; | 문자열 상수를 가리킴 (수정 ❌) |
📌 문자열 출력 예시
char str[ ] = "Coding";
char *p = str;
for (int i = 0; p[i] != '\0'; i++)
{
printf("%c", *(p + i));
}
✅ 널 문자 '\0'는 문자열의 끝을 나타냄
✍ 문자열 입력 예제
char name[20];
printf("이름을 입력하세요: ");
scanf("%s", name);
printf("안녕하세요, %s님!\n", name);
✅ 문자열 입력 시 scanf()는 공백 전까지 입력
✅ 공백 포함 입력은 fgets(name, sizeof(name), stdin); 사용
🔧 문자열 관련 표준 함수 (string.h)
함수설명
strlen(str) | 문자열 길이 반환 |
strcpy(dest, src) | 문자열 복사 |
strcat(dest, src) | 문자열 연결 |
strcmp(s1, s2) | 문자열 비교 |
✅ 사용 전 #include <string.h> 필수
🛠 실전 예제: 문자열 비교기
#include <stdio.h>
#include <string.h>
int main()
{
char pw1[20], pw2[20];
printf("비밀번호 입력: ");
scanf("%s", pw1);
printf("비밀번호 재입력: ");
scanf("%s", pw2);
if (strcmp(pw1, pw2) == 0)
printf("일치합니다.\n");
else printf("불일치합니다.\n");
return 0;
}
🎯 실습 과제
- 포인터를 이용해 정수 배열 요소들을 출력하세요.
- 문자열 입력받고 길이를 출력하는 프로그램 작성
- 포인터를 이용해 문자열을 뒤집어 출력하기
💡 핵심 요약
- 배열 이름은 주소값 → 포인터처럼 사용 가능
- 포인터 산술 연산으로 배열 접근 가능
- 문자열은 char 배열로 구성됨
- 문자열 관련 함수는 string.h에 포함됨
🗣 다음 주 예고: 동적 메모리 할당 – malloc, free 등 실전 포인터 활용법!
이제 포인터와 배열, 문자열까지 다뤘다면
다음은 런타임에 메모리를 할당하고 해제하는 기술,
즉 동적 메모리 할당을 배울 차례입니다.
어 #배열과포인터 #문자열처리 #string함수 #C언어중급 #C언어배열 #C언어포인터 #프로그래밍기초
반응형
'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 |
중급1강_C언어 포인터(Pointer) 완전 정복! 메모리 주소와 참조를 한 번에 이해하자 (0) | 2025.04.20 |