본문 바로가기
프로그래밍 언어/C++

배열 기초

by 거북이의 기술블로그 2024. 7. 1.
1. 배열 형식        
2. 배열 특징        
3. 포인터 vs 배열
4. 배열 함수 인자

 

배열 형식

[TYPE] [배열이름][개수] // int arr[10];
  • 배열의 크기는 상수
    • 배열의 크기를 지정해주거나 초기화를 진행하여 사이즈를 알려주어야 함

 

 

배열 특징

  • 배열의 이름 == 배열의 시작 주소
  • 배열은 순차적으로 저장되어있음 (인덱스)
  • 배열의 연산 또한 포인터와 유사하게 한칸의 차지하고 있는 바이트만큼 이동
  • 포인터와 참조를 이용한 배열의 표현
int arr[10] = {}; // 배열의 초기화 ( 모든 인덱스에 해당하는 수를 0으로 초기화 )

int& ref = *(arr + 2); // (0, 1, 2, 3...) ->3번째 인덱스로 이동 
ref = 10; // arr[2] = 10 과 동일한 표현

 

  •  배열의 선언 방법
    • 개수 지정 : int arr[10] = {};
      • 10개의 각 int 크기(4Byte)를 가진 배열 생성
    • 값으로 초기화 : int arr[] = {1,2,3,4,5};
      • 5개의 각 int 크기(4Byte)를 가진 배열 생성

 

포인터 vs 배열

1. 포인터
const char * ptr = "Hello World"

2. 배열
char test[] = "Hello World";
  • 포인터
    • .data영역에 "Hello World" 저장된 값을 가리키는 ptr 생성
    • 따라서, 해당 값의 인덱싱도 불가능하며, 수정또한 불가능하다 (const  값)
  • 배열
    • "Hello World"를 값을 저장하는 것은 동일하지만, 해당 값을 직접 저장하고 있음
    • 따라서, 해당 값의 수정이 가능

 

 

함수 인자

void Test (char a[]) // 컴파일러가 알아서 포인터로 변환해서 사용
{
    a[2] = 'A';
}

/*
void Test (char * a) // 컴파일러가 알아서 포인터로 변환해서 사용
{
    a[2] = 'A';
}
*/

//반환값 존재
char * RetTest( char a[] )
{
    a[2] = 'X';
    
    return a;
}

char test[] = "Hello World";
Test(test); // 배열의 이름은 포인터

cout << test; // HeAlo World  출력

char *retTest = RetTest(test);


  • 배열의 경우 함수인자로 넘겨질 경우 표현 방법이 2개이다.
    • 1. void Test ( char a [] )
    • 2. void Test ( char * a )
  • 배열을 반환할경우
    • 포인터를 사용
    • char* Test( char *a)

'프로그래밍 언어 > C++' 카테고리의 다른 글

객체 지향 (+ 생성자, 소멸자)  (0) 2024.07.02
다중 포인터 & 다차원 배열  (0) 2024.07.02
참조(&) 기초  (0) 2024.07.01
포인터 기초  (0) 2024.07.01