728x90

배열 : 같은 데이터형 변수를 메모리에 연속적으로 할당함

ex) arr[3] : arr[0], arr[1],arr[2]

  • 배열 선언시 타입에 따라 메모리에 할당

    ex) int arr[3] : 4byte * 3 = 12byte

    ​ char arr[3] : 1byte * 3 = 3byte

  • 배열 초기값 지정 시 크기보다 부족하게 지정될 경우, 나머지 배열의 값은 0으로 초기화 (초기값보다 많이 할 경우 당연히 에러)

  • 초기값을 지정하는 경우, 배열의 크기선언은 생략 가능, 다만 선언된 크기만큼만 지정된다.

  • 배열에 다른 배열을 대입은 항상 불가능, 하기 위해선 1대1 대응만 가능

  • int arr[3]을 선언할 경우 변수 arr에는 arr배열의 주소가 들어가있다.

2차원 배열 : 행(row), 열(column) 순서로 들어감

int scores[5][3]

학생번호 중간고사 기말고사 과제
0 score[0][0] score[0][1] score[0][2]
1 score[1][0] score[1][1] score[1][2]
2 score[2][0] score[2][1] score[2][2]
3 score[3][0] score[3][1] score[3][2]
4 score[4][0] score[4][1] score[4][2]
  • 2차원 배열 초기화는 {}안에 {}를 넣어줘야 함

    ex) int data[3][2] = {{10,20},{30,40},{50,60}};

  • 초기화할때 행은 생략 가능

    ex) int w[][3] = {{1,2},{3},{4,5}} | {1,2,0},{3,0,0},{4,5,0}으로 초기화

    ​ int z[][2] = {1,2,3,4,5,6,7} | {{1,2},{3,4},{5,6},{7,0}}으로 초기화

배열을 매개변수로 받아올 때

void print_array(int arr[], int size)
{
    ;
}
int main(void)
{
    int data[] = {1,2,3};
    print_array(data,3);
}

배열의 주소와 크기를 따로 받아오고, main에서 전달할 때 배열의 이름을 전달해줘야 한다. (이름으로 지정된 변수에 배열의 주소가 저장되어 있기 때문) 또한, 당연히 원소형은 일치해야 한다.

728x90

+ Recent posts