
π― κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°κ³Ό κ°λ° νμ κ°λ μ μ 리ν©λλ€.
ν¨μ ν¬μΈν°λ ν¨μλ₯Ό κ°λ¦¬ν€λ ν¬μΈν°λ‘, ν¨μμ μ£Όμλ₯Ό μ μ₯νκ³ μ΄λ₯Ό ν΅ν΄ ν΄λΉ ν¨μλ₯Ό νΈμΆν μ μμ΅λλ€.
μλ£ν(*ν¨μ ν¬μΈν° μ΄λ¦)(μΈμ λͺ©λ‘);
[ν¨μ ν¬μΈν° μ½λ μμ]
μΌλ°μ μΌλ‘ ν¨μλ κ³ μ λ μ£Όμμ μ μ₯λμ§λ§, ν¨μ ν¬μΈν°λ₯Ό μ¬μ©νλ©΄ μ΄λ€ ν¨μλ₯Ό νΈμΆν μ§ λ°νμμ κ²°μ ν μ μμ΅λλ€.
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
int (*operation)(int, int);
char op;
int x = 10, y = 5;
printf("μ°μ°μ μ ννμΈμ (+ λλ -): ");
scanf(" %c", &op);
if (op == '+') {
operation = add;
} else {
operation = subtract;
}
printf("κ²°κ³Ό: %d\n", operation(x, y));
}
π€ ν¨μ μ£Όμκ°μ μ λ¬ν λλ μ
&λ₯Ό μ°μ§ μμκΉ?ν¨μμ μ΄λ¦μ΄ ν¨μμ λ©λͺ¨λ¦¬ μ£Όμκ°μ΄κΈ° λλ¬Έμ μ°μ°μλ₯Ό λΆμ΄μ§ μμλ λ©λλ€.
νλ μ΄μμ μλ‘ λ€λ₯Έ μ’ λ₯μ λ³μ(λ°μ΄ν°)λ₯Ό νλλ‘ λ¬Άμ΄μ μλ‘μ΄ λ°μ΄ν° νμ μ μ μνλ κΈ°λ₯μ λλ€.
ꡬ쑰체λ₯Ό μ μΈν λλ struct ν€μλλ₯Ό μ¬μ©ν©λλ€.
#include <stdio.h>
struct Student {
char name[20];
int age;
float grade;
};
int main() {
struct Student s1 = {"Alice", 20, 3.8};
printf("μ΄λ¦: %s\n", s1.name);
printf("λμ΄: %d\n", s1.age);
printf("νμ : %.1f\n", s1.grade);
return 0;
}
μ¬λ¬ κ°μ λ³μλ₯Ό νλμ λ©λͺ¨λ¦¬ 곡κ°μμ 곡μ νλ λ°μ΄ν° ꡬ쑰μ λλ€. ꡬ쑰체μ λΉμ·νμ§λ§ λͺ¨λ λ©€λ² λ³μκ° κ°μ λ©λͺ¨λ¦¬ 곡κ°μ 곡μ νλ€λ μ μμ μ°¨μ΄κ° μμ΅λλ€.
곡μ©μ²΄λ₯Ό μ μΈν λλ union ν€μλλ₯Ό μ¬μ©ν©λλ€.
#include <stdio.h>
union Data {
int i;
float f;
char str[20];
};
int main() {
union Data data;
data.i = 10;
printf("μ μ: %d\n", data.i);
data.f = 3.14;
printf("μ€μ: %f\n", data.f);
printf("μ μ κ° νμΈ: %d\n", data.i); // μ΄μν κ°μ΄ μΆλ ₯λ κ°λ₯μ±μ΄ μμ
strcpy(data.str, "Hello");
printf("λ¬Έμμ΄: %s\n", data.str);
return 0;
}
β οΈ κ³΅μ©μ²΄λ λͺ¨λ λ©€λ²κ° κ°μ λ©λͺ¨λ¦¬λ₯Ό 곡μ νλ―λ‘, κ°μ μ μ₯νλ©΄ κΈ°μ‘΄ κ°μ΄ μ¬λΌμ§λλ€. λ°λΌμ κ°μ μ μ₯ν μ¦μ λ°λ‘ μ¬μ©ν΄μΌ νλ©°, μ¬λ¬ κ°μ λμμ 보κ΄ν μ μμ΅λλ€.
κ΄λ ¨λ μμλ€μ νλμ κ·Έλ£ΉμΌλ‘ λ¬Άμ΄ κ΄λ¦¬ν λ μ¬μ©λ©λλ€. μ»΄νμΌλ¬λ μ΄κ±°νμ λ©€λ²λ₯Ό μ μν μμλ‘ μ·¨κΈνλ©°, κΈ°λ³Έμ μΌλ‘ 0λΆν° 1μ© μ¦κ°νλ κ°μ΄ μλμΌλ‘ ν λΉλ©λλ€.
μ΄κ±°νμ μ μΈν λλ enum ν€μλλ₯Ό μ¬μ©ν©λλ€.
#include <stdio.h>
enum Week {
SUNDAY = 0,
MONDAY,
TUESDAY,
WEDNESDAY,
THURSDAY,
FRIDAY,
SATURDAY
};
int main() {
int userInput;
enum Week today;
printf("μμΌμ μ«μλ‘ μ
λ ₯νμΈμ (0: μΌ, 1: μ, 2: ν, 3: μ, 4: λͺ©, 5: κΈ, 6: ν ): ");
scanf("%d", &userInput);
if (userInput < 0 || userInput > 6) {
printf("μλͺ»λ μ
λ ₯μ
λλ€.\n");
} else {
today = (enum Week)userInput; // μ μλ₯Ό μ΄κ±°νμΌλ‘ λ³ν
printf("μ νν μμΌμ λ²νΈ: %d\n", today);
}
return 0;
}
μΆμ² : μν€νΌλμ 'λμ λ©λͺ¨λ¦¬ ν λΉ'
μ½λ μμμ μ€νν νλ‘κ·Έλ¨μ λͺ λ Ήμ΄κ° μ μ₯λλ 곡κ°μ λλ€. CPUκ° μ΄ μμμμ λͺ λ Ήμ΄λ€μ νλμ© μ²λ¦¬ν©λλ€.
ν¨μ νΈμΆ μ μ§μ λ³μμ ν¨μμ λ°ν μ£Όμκ° μ μ₯λλ μμμ λλ€.
νμ λμ μΌλ‘ ν λΉλ λ©λͺ¨λ¦¬κ° μ μ₯λλ 곡κ°μ λλ€. νλ‘κ·Έλ¨ μ€ν μ€ μ¬μ©μκ° μ§μ λ©λͺ¨λ¦¬λ₯Ό ν λΉ λ° ν΄μ ν μ μλ€.
#include <stdio.h>
#include <stdlib.h> // malloc(), free() μ¬μ©μ μν ν€λ νμΌ
int main() {
int *ptr = (int *)malloc(sizeof(int) * 5); // ν μμμ μ μ 5κ° ν¬κΈ°μ λμ λ°°μ΄ ν λΉ
if (ptr == NULL) {
printf("λ©λͺ¨λ¦¬ ν λΉ μ€ν¨\n");
return 1;
}
for (int i = 0; i < 5; i++) {
ptr[i] = i * 10;
printf("%d ", ptr[i]);
}
free(ptr); // ν λ©λͺ¨λ¦¬ ν΄μ
return 0;
}
malloc() κ°μ λμ λ©λͺ¨λ¦¬ ν λΉ ν¨μλ₯Ό μ¬μ©ν΄μ μ€ν μ€μ ν¬κΈ°λ₯Ό μ ν μ μμ΅λλ€.
λͺ
μμ μΌλ‘ free()λ₯Ό νΈμΆν΄μΌ λ©λͺ¨λ¦¬κ° ν΄μ λ©λλ€.
( λμ ν λΉμΌλ‘ μ»μ λ©λͺ¨λ¦¬λ₯Ό free()λ‘ ν΄μ νμ§ μμΌλ©΄, ν΄λΉ λ©λͺ¨λ¦¬λ νλ‘κ·Έλ¨μ΄ μ’
λ£λ λκΉμ§ κ³μ μ°¨μ§νκ² λκΈ° λλ¬Έμ
λλ€. )
π‘ μμΌλ‘ κ°μ²΄λ₯Ό λμ μΌλ‘ μμ±ν λ μ¬μ©λλ
new μ°μ°μλ₯Ό μ΄μ©ν κ°μ²΄λ ν μμμ κ°μ²΄κ° μμ±λ©λλ€. λ€λ§, TypeScriptμμλ λ€λ§, GC(κ°λΉμ§ 컬λ μ ) μ΄ μκΈ° λλ¬Έμ C++μ²λΌdeleteλ₯Ό μ§μ ν νμλ μμ΅λλ€.
λ°μ΄ν° μμμλ μ μ λ³μμ static λ³μκ° μ μ₯λ©λλ€. νλ‘κ·Έλ¨ μμ μ λ©λͺ¨λ¦¬κ° ν λΉλκ³ , μ’
λ£λ λκΉμ§ μ μ§λλ€.
νλ‘κ·Έλ¨μ κ°μ²΄(ν΄λμ€) λ¨μλ‘ κ΅¬μ±νκ³ , κ°μ²΄κ° μλ‘ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°μΌλ©° λμνλλ‘ μ€κ³νλ λ°©μμ
λλ€.

βοΈ λ±μ₯ λ°°κ²½
μ΄κΈ°μ νλ‘κ·Έλλ°μ μ μ°¨ μ§ν₯(ꡬ쑰μ ) νλ‘κ·Έλλ° λ°©μμ΄ μ£Όλ₯Ό μ΄λ€μ΅λλ€. λͺ λ Ήμ΄λ₯Ό μμ°¨μ μΌλ‘ μ€ννλ©΄μ νλ‘κ·Έλ¨μ μμ±νλ λ°©μμΌλ‘, μ½λλ₯Ό ν¨μ λ¨μλ‘ λλμ΄ κ΄λ¦¬νλ κ²μ΄ νΉμ§μ λλ€.
νμ§λ§, μννΈμ¨μ΄κ° μ μ λννλκ³ λ³΅μ‘ν΄μ§λ©΄μ λͺ κ°μ§ νκ³κ° λνλ¬μ΅λλ€.
μ½λ μ¬μ¬μ©μ΄ μ΄λ ΅λ€
μ μ§λ³΄μκ° μ΄λ ΅λ€
λ°μ΄ν° 보νΈκ° μ΄λ ΅λ€
μ΄λ¬ν λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν΄ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°(OOP, Object-Oriented Programming) κ°λ μ΄ λ±μ₯νμ΅λλ€.
ν΄λμ€λ μ¬μ©μ μ μ λ°μ΄ν° νμ
μΌλ‘, λ°μ΄ν°(λ©€λ² λ³μ)μ κΈ°λ₯(λ©€λ² ν¨μ)λ₯Ό ν¨κ» λ¬Άμ΄ μ¬μ©ν μ μλλ‘ νλ κ°λ
μ
λλ€. κ°μ²΄λ₯Ό λ§λ€κΈ° μν μ€κ³λλΌκ³ ν μ μμ΅λλ€.
λ©€λ² λ³μ(νλ) : κ°μ²΄κ° κ°μ§λ λ°μ΄ν°μ λλ€.
λ©μλ(λ©€λ² ν¨μ) : κ°μ²΄κ° μννλ κΈ°λ₯μ λλ€.
μμ±μ(Constructor) : κ°μ²΄κ° μμ±λ λ μλμΌλ‘ μ€νλλ ν¨μμ λλ€.
μ κ·Ό μ§μ μλ ν΄λμ€ λ΄λΆμ λ©€λ²(λ³μ, λ©μλ)μ λν μ κ·Ό κΆνμ μ€μ νλ ν€μλμ λλ€.
public : λꡬλ μ κ·Ό κ°λ₯ν μ§μ μμ
λλ€. (μΈλΆμμλ μ¬μ© κ°λ₯)
protected : μμ κ΄κ³μμλ§ μ κ·Ό κ°λ₯ν μ§μ μμ
λλ€. (μμ ν΄λμ€μμλ§ μ¬μ© κ°λ₯)
private : ν΄λμ€ λ΄λΆμμλ§ μ κ·Ό κ°λ₯ν μ§μ μμ
λλ€. (μΈλΆμμλ μ κ·Ό λΆκ°λ₯)
ν΄λμ€μ μ μΈν λλ class ν€μλλ₯Ό μ¬μ©ν©λλ€.
κ°μ²΄ μ§ν₯ μΈμ΄μΈ C#μ μμλ‘ ν©λλ€.
using System;
class Dog {
// λ©€λ² λ³μ
private int eyes;
private int nose;
private int mouth;
private int ears;
// μμ±μ
public Dog() {
eyes = 2;
nose = 1;
mouth = 1;
ears = 2;
}
// λ©€λ² λ©μλ
public void Bark() {
Console.WriteLine("λ©λ©!");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
// λ©μλ νΈμΆ
myDog.Bark(); // "λ©λ©!"
}
}
λΆνμν μΈλΆ μ¬νμ κ°μΆκ³ , ν΅μ¬ κΈ°λ₯λ§ μ 곡νλ κ²μ λλ€.
μΈλΆμμ λ΄λΆ λ°μ΄ν°λ₯Ό μ§μ λ³Ό μ μλλ‘ μ¨κΈ°κ³ , μΈν°νμ΄μ€λ₯Ό ν΅ν΄ μ‘°μνλλ‘ ν©λλ€.
κΈ°μ‘΄ ν΄λμ€μ κΈ°λ₯μ κ·Έλλ‘ λ¬Όλ €λ°κ³ , νμν κΈ°λ₯μ μΆκ°ν μ μλλ‘ ν©λλ€.
class Animal {
public void Eat() {
Console.WriteLine("λ¨Ήλλ€.");
}
}
class Dog : Animal {
public void Bark() {
Console.WriteLine("λ©λ©!");
}
}
class Program {
static void Main() {
Dog myDog = new Dog();
myDog.Eat(); // "λ¨Ήλλ€."
myDog.Bark(); // "λ©λ©!"
}
}
κ°μ λ©μλλΌλ κ°μ²΄μ λ°λΌ λ€λ₯΄κ² λμνλ κ²μ λ§ν©λλ€. μ€λ²λΌμ΄λ©(Overriding) κ³Ό μ€λ²λ‘λ©(Overloading) λ κ°μ§ κΈ°λ²μ΄ μμ΅λλ€.
κ°μ μ΄λ¦μ λ©μλλ₯Ό λ§€κ°λ³μλ§ λ€λ₯΄κ² μ μν©λλ€.
class MathOperations {
public int Add(int a, int b) {
return a + b;
}
public double Add(double a, double b) {
return a + b;
}
}
class Program {
static void Main() {
MathOperations math = new MathOperations();
Console.WriteLine(math.Add(3, 5)); // 8
Console.WriteLine(math.Add(3.5, 2.5)); // 6.0
}
}
λΆλͺ¨ ν΄λμ€μ λ©μλλ₯Ό μ¬μ μν©λλ€.
class Animal {
public virtual void Speak() {
Console.WriteLine("λλ¬Όμ΄ μ리λ₯Ό λΈλ€.");
}
}
class Dog : Animal {
public override void Speak() {
Console.WriteLine("λ©λ©!");
}
}
class Program {
static void Main() {
Animal myAnimal = new Dog();
myAnimal.Speak(); // "λ©λ©!"
}
}
μΈν°νμ΄μ€λ λ©μλμ λͺ©λ‘λ§μ κ°μ§κ³ μλ λͺ μΈλ‘, μ¬μ©μ μ μ νμ μ λλ€. μ¦, λ©μλμ μ μΈλ§ ν¬ν¨νλ©°, ꡬνμ νμ§ μμ΅λλ€.
using System;
interface IFlyable { // μΈν°νμ΄μ€
void Fly();
}
class Bird : IFlyable {
public void Fly() {
Console.WriteLine("μκ° λ μκ°λλ€.");
}
}
class Airplane : IFlyable {
public void Fly() {
Console.WriteLine("λΉνκΈ°κ° λ μκ°λλ€.");
}
}
class Program {
static void Main() {
IFlyable myBird = new Bird();
myBird.Fly(); // "μκ° λ μκ°λλ€."
IFlyable myPlane = new Airplane();
myPlane.Fly(); // "λΉνκΈ°κ° λ μκ°λλ€."
}
}
π€ μΈν°νμ΄μ€λ₯Ό μ μ¬μ©νλ κ±ΈκΉ?
μΌκ΄μ± μ μ§ - μ¬λ¬ κ°λ°μκ° κ³΅λ μμ μ ν λ, νμ€μ μ νλ μν μ ν©λλ€.
μ½λ μ μ§λ³΄μ & μμ μ©μ΄ - κΈ°μ‘΄ ν΄λμ€λ₯Ό μμ νμ§ μκ³ λ κΈ°λ₯μ μΆκ°ν μ μμ΅λλ€.
λ€μ€ μμ κ°λ₯ - μΈν°νμ΄μ€λ μ¬λ¬ κ° μμμ΄ κ°λ₯ν©λλ€.
κΈ°μ‘΄ μ΅λͺ λ©μλλ₯Ό λμ± κ°κ²°νκ² λ§λλ μμ λλ€.
κΈ°μ‘΄μλ μ΅λͺ
λ©μλλ₯Ό μ¬μ©νλ €λ©΄ delegate ν€μλλ₯Ό μ¨μΌ νλ κ²μ =>λ‘ ν¨μλ₯Ό κ°κ²°νκ² ννν κ²μ
λλ€.
Square square = x => x * x;
Console.WriteLine(square(5)); // 25
λ΄ μ½λλ λλΆλΆ μ μ°¨μ§ν₯μ΄μλ€λ κ±Έ μκ² λμκ³ , κ°μ²΄μ§ν₯μ μΌλ‘ λ°κΎΈλ €λ©΄ ν΄λμ€μ λ μ΅μν΄μ ΈμΌκ² λ€κ³ λκΌλ€.