Study/C++

C++ 기초 (2) 배열과 함수

하임 2025. 12. 8. 21:07

배열

배열 선언

1. 배열 - 동일한 타입의 여러 값을 한꺼번에 담을 수 있는 자료 구조.

2. 선언과 동시에 초기화 / 선언 후 추후 초기화 가능. (변수와 동일)

// 배열 선언과 동시에 초기화
int arr1[3] = {1, 2, 3};

// 선언 후 개별 원소 초기화
int arr2[3];
arr2[0] = 10;
arr2[1] = 20;
arr2[2] = 30;

 

 배열 임의 접근

[ ] (배열 첨자 연산자) 를 통해서 각 원소에 임의 접근 가능.

int arr[4] = {10, 20, 30, 40};

// 배열 원소에 임의 접근하여 출력
cout << "첫 번째 원소: " << arr[0] << endl;
cout << "두 번째 원소: " << arr[1] << endl;
cout << "세 번째 원소: " << arr[2] << endl;
cout << "네 번째 원소: " << arr[3] << endl;

// 범위를 벗어난 접근 (에러 발생 가능)
// cout << arr[4] << endl;  // 정의되지 않은 동작 (UB, 오류 가능)

 

 배열 복사 및 대입

통째로 복사 및 대입 불가.

int arr1[3] = {1, 2, 3};
int arr2[3];

// 개별 원소를 복사하는 것은 가능
for (int i = 0; i < 3; i++) {
    arr2[i] = arr1[i];
}

// 배열 통째로 대입 (불가능, 주석 처리)
// arr2 = arr1;  // 컴파일 오류 발생

 

 배열 입출력

각 원소에 cin cout 입출력 가능

#include <iostream>
using namespace std;

// 배열 원소를 개별적으로 입력 및 출력하는 예제 (반복문 없이)
int main() {
    int arr[2]; // 크기 2의 배열 선언

    // 각 원소에 대해 개별적으로 입력 받기
    cout << "첫 번째 정수를 입력하세요: ";
    cin >> arr[0];

    cout << "두 번째 정수를 입력하세요: ";
    cin >> arr[1];

    // 각 원소 개별 출력
    cout << "입력한 값: " << arr[0] << ", " << arr[1] << endl;

    return 0;
}

 

함수

 함수 정의와 호출

함수 - 반복적으로 사용되는 코드/논리적으로 묶이는 코드에 이름을 붙여 정의하는 문법. (가독성, 재사용성 향상)

인자, 동작, 반환, 이름으로 구성.

#include <iostream>
using namespace std;

// 두 정수를 더하는 함수
int add(int a, int b) {
    return a + b; // 결과 반환
}

int main() {
    int result = add(3, 7);
    cout << "3 + 7 = " << result << endl; // 출력: 3 + 7 = 10
    return 0;
}

// 인자 : int a, int b
// 동작 : a + b;
// 반환 : a + b의 결과값
// 이름 : add

 

값 전달 방식

1. 값 전달 (일반 변수)

// 함수: 값 전달 (Call by Value)
void modifyValue(int x) {
    x = 100;  // 함수 내부에서 값 변경
}

int main() {
    int num = 50;
    modifyValue(num); // 값 전달 (복사됨)
    
    cout << "값 전달 후 num: " << num << endl;
    // 출력: 값 전달 후 num: 50
    return 0;
}

 

2. 주소값 전달 (변수)

// 함수: 포인터를 사용한 값 변경
void modifyValue(int* ptr) {
    *ptr = 100;  // 포인터가 가리키는 변수의 값을 변경
}

int main() {
    int num = 50;
    modifyValue(&num); // num의 주소 전달

    cout << "포인터 전달 후 num: " << num << endl;
    // 출력: 포인터 전달 후 num: 100
    return 0;
}

 

3. 주소값 전달 (배열)

// 함수: 포인터를 사용한 값 변경
void modeifyArr(char* ptr) {
    ptr[0] = 'X';  // 포인터가 가리키는 변수의 값을 변경
}

int main() {
    char str[4] = {'A', 'B', 'C', 'D'};
    modeifyArr(str); // num의 주소 전달

    cout << "포인터 전달 후 str[0] = " << str[0] << endl;
    // 출력: 포인터 전달 후 str[0] = X
    return 0;
}

 

4. 참조자 전달

// 함수: 참조를 사용한 값 변경
void modifyValueByReference(int& x) {
    x = 200;  // 참조를 사용하여 원본 값 변경
}

int main() {
    int num = 50;
    modifyValueByReference(num); // 참조 전달

    cout << "참조 전달 후 num: " << num << endl;
    // 출력: 참조 전달 후 num: 200
    return 0;
}

'Study > C++' 카테고리의 다른 글

C++ 템플릿  (0) 2025.12.17
C++ 기초 (3) 조건문과 반복문  (0) 2025.12.09
C++ 기초 (1) 변수  (0) 2025.12.05