카테고리 없음

C프로그래밍 13주차 과제

hameunbin01 2026. 5. 27. 09:23

출처 : Smile Han

 

 

 

 

 

 

개념의미쉽게 말하면

생명주기 (Lifetime) 변수가 메모리에 생성되고 사라질 때까지의 기간 “언제 만들어지고 언제 없어지는가?”
가시성 (Scope) 변수를 사용할 수 있는 범위 “어디에서 접근 가능한가?”

 

 

 

구분지역변수(Local Variable)전역변수(Global Variable)

 

선언 위치 함수 내부 함수 외부
사용 가능 범위 선언된 함수 안에서만 사용 모든 함수에서 사용 가능
생성 시점 함수 호출 시 생성 프로그램 시작 시 생성
소멸 시점 함수 종료 시 제거 프로그램 종료 시 제거
초기값 자동 초기화 안 됨 (쓰레기값 가능) 자동으로 0 초기화
저장 영역 스택(Stack) 메모리 데이터(Data) 영역
접근성 제한적 전체 프로그램에서 공유
장점 안전하고 관리 쉬움 여러 함수에서 공유 가능
단점 함수 밖에서 사용 불가 남용 시 코드 복잡
우선순위 같은 이름이면 지역변수가 우선 지역변수에 가려질 수 있음
주 사용 목적 임시 계산, 함수 내부 작업 공통 데이터 저장

 

 

 

 

 

 

코드 영역과 데이터 영역 정리

구분설명
코드 영역(Code Area) 프로그램의 실행 코드(명령어)가 저장되는 메모리 영역
데이터 영역(Data Area) 변수나 데이터가 저장되는 메모리 영역

 

 

 

 

 

 

 

 

 

기억 클래스 : 자동(auto) 한눈 정리

항목설명

 

의미 가장 기본적인 지역변수
선언 위치 함수 또는 블록 내부
저장 위치 스택(Stack) 영역
생성 시점 함수/블록 시작 시
소멸 시점 함수/블록 종료 시
사용 범위 선언된 블록 내부만
초기값 자동 초기화 안 됨 (쓰레기값 가능)
특징 가장 많이 사용하는 변수

 

 

auto의 핵심 특징

특징내용
지역변수 함수 안에서만 사용 가능
자동 생성/삭제 함수 시작 시 생성, 끝나면 제거
스택 사용 메모리의 Stack 영역 사용
auto 생략 가능 보통 auto를 쓰지 않음
초기화 주의 초기화 안 하면 garbage value 발생 가능

 

 

 

 

구분auto 변수지역변수(Local)static 변수전역변수(Global)
선언 위치 함수 내부 함수 내부 함수 내부/외부 함수 외부
저장 영역 Stack Stack Data Data
생성 시점 함수 호출 시 함수 호출 시 프로그램 시작 시 프로그램 시작 시
소멸 시점 함수 종료 시 함수 종료 시 프로그램 종료 시 프로그램 종료 시
값 유지 여부 ❌ 유지 안 됨 ❌ 유지 안 됨 ⭕ 유지됨 ⭕ 유지됨
사용 범위(Scope) 선언된 블록 내부 선언된 함수 내부 선언된 범위 내부 프로그램 전체
초기값 쓰레기값 가능 쓰레기값 가능 자동 0 초기화 자동 0 초기화
특징 가장 기본 변수 함수 안에서만 사용 이전 값 기억 모든 함수가 공유
주 사용 목적 임시 계산 함수 내부 작업 호출 횟수 저장 등 공통 데이터 관리

핵심 비교 한 줄

변수 종류핵심 특징
auto 변수 함수 끝나면 사라짐
지역변수 함수 안에서만 사용
static 변수 값이 계속 유지됨
전역변수 모든 함수가 함께 사용

 

 

기호이름주 사용 용도예시
( ) 소괄호 함수 호출, 연산 우선순위, 조건식 printf(), if(a>b)
[ ] 대괄호 배열(Array) 사용 arr[0]

 

 

구분Python 배열(리스트)C언어 배열

저장 방식 다양한 자료형 저장 가능 같은 자료형만 저장 가능
크기 변경 가능 불가능
메모리 관리 자동 직접 관리
사용 편의성 매우 쉬움 상대적으로 복잡
인덱스 시작 0부터 시작 0부터 시작
속도 비교적 느림 매우 빠름
메모리 효율 낮음 높음
배열 길이 확인 쉬움 (len) 직접 계산 필요
범위 검사 자동 검사 직접 관리
문자열 처리 쉬움 문자 배열로 처리
동적 기능 append, remove 등 제공 직접 구현 필요

 

 

 

 

 

 

 

 

 

 

 

다차원 배열(Multi-dimensional Array)

다차원 배열은:

“배열 안에 배열이 들어있는 형태”

입니다.

가장 많이 사용하는 것은 2차원 배열입니다.


1. 1차원 배열 복습

형태의미
1차원 배열 한 줄로 저장된 배열

예시 느낌:

[10][20][30]
 

2. 2차원 배열

의미

행(row)과 열(column)로 구성된 배열

표처럼 데이터를 저장합니다.

 

 

문자열(String)

항목설명
의미 여러 문자를 연결한 데이터
구성 문자(Character)의 집합
저장 형태 문자 배열(char 배열)
끝 표시 문자열 끝에는 NULL 문자(\0)가 존재
사용 목적 단어, 문장 저장

문자열 특징

특징설명
문자들의 연속 메모리에 순서대로 저장
마지막에 \0 포함 문자열 끝을 구분
실제로는 배열 C언어 문자열은 char 배열
한 글자씩 접근 가능 인덱스로 문자 접근 가능

NULL 문자 (\0)

항목설명
의미 문자열의 끝 표시
ASCII 값 0
역할 문자열 종료 판단

즉 C언어는:

  • 어디까지가 문자열인지
  • \0를 보고 판단합니다.

문자열 배열(String Array)

의미

여러 개의 문자열을 저장하는 배열

즉:

문자열들의 배열
 

입니다.


구조 개념

단계의미
문자 한 글자
문자열 문자들의 묶음
문자열 배열 문자열 여러 개의 묶음

문자열 배열 특징

특징설명
여러 문자열 저장 가능 단어 목록 저장 가능
2차원 배열 형태 사용 행마다 문자열 저장
각 행이 하나의 문자열 각 문자열 끝에 \0 존재

문자열 vs 문자열 배열

구분문자열문자열 배열
저장 대상 하나의 문자열 여러 문자열
구조 1차원 char 배열 2차원 char 배열
사용 목적 단어/문장 저장 여러 단어 저장