신규 블로그를 만들었습니다!

2020년 이후부터는 아래 블로그에서 활동합니다.

댓글로 질문 주셔도 확인하기 어려울 수 있습니다.

>> https://bluemiv.tistory.com/

1. 배열이란?

인덱스를 이용해서 자료형이 같은 데이터를 관리 하는것으로, 자료형이 같을때 사용하면 효율적으로 이용할 수 있다.

 

 

 

배열을 만들때는 선언과 초기화를 따로 하는경우와 동시에 하는 방법이 있다.

 

1-1. 배열 선언과 초기화를 따로 하는 경우

자료형 배열명[배열의크기];

배열명[인덱스] = 값;

 

// 배열 선언

int score[4];

 

// 배열 초기화

score[0] = 90;

score[1] = 88;

score[2] = 70;

score[3] = 100;

 

1-2. 배열 선언과 초기화를 동시에 하는 경우

자료형 배열명[배열의크기] = {값, 값, 값, ... 값};

 
// 선언 & 초기화

int score[4] = {90, 88, 70, 100};

 
 
 

2. 배열의 메모리 주소

배열의 각각의 데이터는 메모리 주소를 가지고 있다. 배열의 주소를 확인 하기 위해서는 '&'를 이용하면 알 수 있다.

int 자료형의 경우는 4byte의 크기를 갖는다. 그래서 처음 배열의 데이터 주소(index 0)와 그 다음의 데이터 주소(index1)의 차이는 4byte만큼 차이가 발생한다.

 

 

 

또 다른 자료형인 char를 살펴보면 1byte의 크기를 갖고 있기 때문에 int처럼 각 데이터간의 주소 차이는 1byte 만큼 차이가 발생한다.

 

 

 

 

 

반대로 배열의 주소를 가지고 값을 찾는 방법도 있다. 배열의 주소를 알기 위해서 &를 사용했지만, 반대로 주소를 가지고 그 주소안의 값을 알고 싶을때는 '*'를 사용 하면 된다.

 

 

 

3.코딩해보기

3-1. 배열의 선언과 초기화를 따로 하는 경우

#include <stdio.h>
 
int main(void) {
 
    // 배열 선언
    int score[4];
 
    // 배열 초기화
    score[0] = 30;
    score[1] = 77;
    score[2] = 90;
    score[3] = 80;
 
    // 반복문을 이용한 출력
    for(int i=0; i<4; i++){
        printf("score[%d] = %d\n", i, score[i]);
    }
 
    return 0;
}
​

 

 

 

3-2. 배열의 선언과 초기화를 동시에 하는 경우

#include <stdio.h>
 
int main(void) {
 
    // 배열의 선언과 초기화를 동시에 하는 경우
    char grade[4] = {'A', 'C', 'B', 'F' };
 
    for(int i=0; i<4; i++){
        printf("grade[%d] = %c\n", i, grade[i]);
    }
 
    return 0;
}
​

 

 

 

3-3. 메모리 주소 출력

#include <stdio.h>
 
int main(void) {
 
    char grade[4] = {'A', 'C', 'B', 'F' };
 
    for(int i=0; i<4; i++){
        printf("grade[%d] = %c\n", i, grade[i]);
    }
 
    // 배열의 메모리 주소 출력
    for (int i = 0; i<4; i++) {
        printf("grade[%d]의 주소 = %x\n", i, &grade[i]);
    }
 
    return 0;
}
​

 

 

 

3-4. 주소를 이용해서 값 찾기

#include <stdio.h>
 
int main(void) {
 
    int num[3] = { 2, 4, 5 };
 
    // num 배열의 주소를 담은 
    int* numAddr[3] = { &num[0], &num[1], &num[2] };
 
    for (int i = 0; i < 3; i++) {
        printf("numAddr[%d] = %x\tvalue = %d\n", i, numAddr[i], *numAddr[i]);
    }
 
    return 0;
}​

 

 

 

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기