Java / / 2024. 7. 1. 08:51

C/C++ 프로그래밍 기초: 포인터, 반복문, 클래스, 그리고 Java의 데이터 타입

 

1. 포인터 변수

 

포인터는 C/C++ 언어에서 중요한 개념으로, 변수나 배열의 메모리 주소를 가리키는 변수입니다. 이는 자바와 같은 언어에서는 직접적으로 사용되지 않지만, 메모리 관리와 효율적인 프로그래밍을 위해 꼭 알아두어야 할 개념입니다.

#include <stdio.h>

int main()
{
    int x = 5;
    int* px = NULL; // 포인터 변수 선언 및 초기화
    px = &x;        // x의 주소를 포인터 변수에 저장

    *px = 15; // 포인터를 사용하여 x의 값을 변경

    printf("x is: %d \n", x);

    int array[] = {1, 2, 3, 4, 5}; // 배열 선언
    int* pArray = array; // 배열의 시작 주소를 포인터에 저장

    // 포인터를 사용하여 배열의 각 요소에 접근
    printf("Array[0] = %d \n", *(pArray + 0));
    printf("Array[1] = %d \n", *(pArray + 1));
    printf("Array[2] = %d \n", *(pArray + 2));
    printf("Array[3] = %d \n", *(pArray + 3));
    printf("Array[4] = %d \n", *(pArray + 4));

    return 0;
}

 

2. 반복 구문

 

반복문은 프로그램 내에서 동일한 작업을 여러 번 반복할 때 사용됩니다. C/C++에서는 for, while, do-while 반복문이 자주 사용됩니다.

 

2.1 for 반복문

#include <stdio.h>

int main() {
    const int array_size = 5;
    int array[array_size] = {1, 2, 3, 4, 5};

    for (int i = 0; i < array_size; i++) {
        printf("array[%d] = %d\n", i, array[i]);
    }

    return 0;
}

 

2.2 while 반복문

#include <stdio.h>

int main() {
    const int array_size = 5;
    int array[array_size] = {1, 2, 3, 4, 5};
    int i = 0;

    while (i < array_size) {
        printf("array[%d] = %d\n", i, array[i]);
        i++;
    }

    return 0;
}

 

2.3 do-while 반복문

#include <stdio.h>

int main() {
    int number;
    scanf_s("%d", &number);

    int i = 0;
    do {
        printf("Current number: %d\n", number);
        number--;
    } while (number > 5);

    return 0;
}

 

3. 메모리 관리: 스택과 힙

 

스택: 함수가 호출될 때 로컬 변수가 저장되는 메모리 영역. 함수가 종료되면 스택에 저장된 변수는 자동으로 소멸됩니다.

: 동적으로 메모리가 할당되는 영역으로, 프로그래머가 명시적으로 메모리를 할당하고 해제해야 합니다.

 

4. 객체 지향 프로그래밍 (OOP)와 클래스

 

클래스는 객체 지향 프로그래밍(OOP)의 핵심 개념으로, 데이터와 메서드를 하나로 묶어 현실 세계의 개체를 모델링합니다.

 

4.1 클래스 정의와 객체 생성

class Person {
public:
    int age;
    char gender;

    void printDetails() {
        printf("Age: %d, Gender: %c\n", age, gender);
    }
};

int main() {
    Person p;
    p.age = 25;
    p.gender = 'M';
    p.printDetails();

    return 0;
}

 

5. Java의 데이터 타입

 

Java는 기본형(Primitive Types)과 참조형(Reference Types) 데이터 타입으로 나뉩니다.

 

5.1 기본형 데이터 타입

 

byte: 8비트 정수 (-128 ~ 127)

short: 16비트 정수 (-32,768 ~ 32,767)

int: 32비트 정수 (-2,147,483,648 ~ 2,147,483,647)

long: 64비트 정수 (-9,223,372,036,854,775,808 ~ 9,223,372,036,854,775,807)

float: 32비트 부동 소수점 (정밀도 약 7자리)

double: 64비트 부동 소수점 (정밀도 약 15자리)

char: 16비트 문자 (유니코드)

boolean: 논리값 (true 또는 false)

 

5.2 참조형 데이터 타입

 

클래스 (Class): 객체의 청사진으로 필드와 메서드를 포함.

인터페이스 (Interface): 클래스가 구현해야 하는 메서드 집합.

배열 (Array): 동일한 타입의 데이터 모음.

 

5.3 박싱과 언박싱

 

Java는 기본형과 대응되는 래퍼 클래스(Wrapper Class)를 제공합니다.

 

박싱(Boxing): 기본형을 래퍼 클래스로 변환.

언박싱(Unboxing): 래퍼 클래스를 기본형으로 변환.

 

class Example {
    int number;
    String text;

    void printDetails() {
        System.out.println("Number: " + number + ", Text: " + text);
    }
}

public class Main {
    public static void main(String[] args) {
        Example example = new Example();
        example.number = 42;
        example.text = "Hello";
        example.printDetails();
    }
}

 

7. 데이터 타입 정리

 

기본형 자료형 (Primitive Types): 실제 데이터 값을 저장. (예: int, long, float)

참조형 자료형 (Reference Types): 데이터가 저장된 메모리 주소를 저장. (예: 클래스, 배열, 문자열)

 

이와 같은 내용을 이해하고 활용하면, C/C++의 메모리 관리와 Java의 객체 지향 프로그래밍 개념을 보다 명확하게 이해할 수 있습니다. 이 지식은 더 나은 성능과 유지보수 가능한 코드를 작성하는 데 도움이 됩니다.

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유