* 프로그래머스, 타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 5기 강의 수강 내용을 정리하는 포스팅.
* 원활한 내용 이해를 위해 수업에서 제시된 자료 이외에, 개인적으로 조사한 자료 등을 덧붙이고 있음.
타입스크립트로 함께하는 웹 풀 사이클 개발(React, Node.js) 5기
int num = 10;
if (num > 0) {
printf("양수입니다.\n");
} else {
printf("0 또는 음수입니다.\n");
}
switch (num) {
case 1: printf("1입니다.\n"); break;
case 10: printf("10입니다.\n"); break;
default: printf("알 수 없는 값입니다.\n");
}
for (int i = 0; i < 5; i++) {
printf("%d ", i); // 0 1 2 3 4
}
int i = 0;
while (i < 5) {
printf("%d ", i++);
}
{}
)이 종료되면 메모리에서 사라진다.#include <stdio.h>
void example() {
int localVar = 10; // 지역변수
printf("지역변수 값: %d\n", localVar);
}
int main() {
example();
// printf("%d", localVar); // 오류: localVar은 main에서 접근 불가
return 0;
}
#include <stdio.h>
int globalVar = 20; // 전역변수
void example() {
printf("전역변수 값: %d\n", globalVar);
}
int main() {
example();
globalVar = 30; // 전역변수 값 변경
printf("변경된 전역변수 값: %d\n", globalVar);
return 0;
}
특성 | 지역변수 (Local Variable) | 전역변수 (Global Variable) |
---|---|---|
선언 위치 | 함수 또는 블록 내부 | 함수 외부 |
접근 범위 | 선언된 함수 또는 블록 내에서만 접근 가능 | 프로그램 전체에서 접근 가능 |
생명 주기 | 함수 또는 블록 실행 동안만 존재 | 프로그램이 종료될 때까지 유지 |
메모리 사용 | 스택(Stack) 메모리 사용 | 데이터(Data) 영역 메모리 사용 |
디버깅 난이도 | 쉬움 | 어려움 |
예시 | int x; (함수 내부) | int x; (함수 외부) |
#include <stdio.h>
int counter = 0; // 전역변수
void increment() {
counter++;
}
void decrement() {
counter--;
}
int main() {
increment();
decrement();
printf("Counter 값: %d\n", counter); // 값 예측이 어려움
return 0;
}
int add(int a, int b) {
return a + b;
}
printf("%d", add(5, 3)); // 8
int arr[3] = {1, 2, 3};
printf("%d", arr[0]); // 1
int a = 10;
int* ptr = &a; // a의 주소 저장
printf("%d", *ptr); // 10 (포인터를 통해 값에 접근)
void sayHello() {
printf("Hello, World!\n");
}
void (*funcPointer)() = sayHello; // 함수 주소 저장
funcPointer(); // Hello, World!
함수에 값을 전달할 때, 변수의 복사본을 전달.
원본 변수는 영향을 받지 않음.
void increment(int n) {
n++;
}
int a = 5;
increment(a);
printf("%d", a); // 5 (원본 변수는 변경되지 않음)
void increment(int* n) {
(*n)++;
}
int a = 5;
increment(&a);
printf("%d", a); // 6 (원본 변수 변경)