배열

문성원·2024년 1월 4일
0

1) 목표

  • 배열의 개념에 대해서 이해하기
  • 배열과 주소에 대해서 살펴보고 이해하기

2) 소스 코드

// Array.cpp 
// 배열

#include "pch.h"
#include <stdio.h>

int main()
{
    char data1 = 2, data2 = 5, data3 = 1, data4 = 3, data5 = 7;
    int sum = data1 + data2 + data3 + data4 + data5;
    printf("sum = %d\n", sum);

    char data[5] = {0,}; // data -> char*
    *(data + 0) = 2;  // *(data + i) => data[i]
    *(data + 1) = 5;
    *(data + 2) = 1;
    *(data + 3) = 3;
    *(data + 4) = 4;

    data[0] = 2;
    data[1] = 5;
    data[2] = 1;
    data[3] = 3;
    data[4] = 4;
    // data[5] = 7; -> *(data + 5) = 7;

    // char data[5] = {2, 5, 1, 3, 4};
    // data = {2, 5, 1, 3, 4} : [오류] 초기화는 변수 선언시에만 가능

    // sum = data[0] + data[1] + data[2] + data[3] + data[4];
    sum = 0;
    int i = 0;
    while (i < 5)
    {
        sum += data[i];
        ++i;
    }
    printf("sum = %d\n", sum);

    i = sum = 0;
    while (i < 5)
    {
        sum = sum + *(data + i);
        ++i;
    }
    printf("sum = %d\n", sum);

    char* p;
    p = &data[0]; // &*(data + 0) -> &*data -> data
    p = data;
    
    p = &data[1];
    p = data + 1; // &*(data + 1) -> &*(data + 1) -> data + 1

    // data++; // data -> char* 이기에 증감 연산자 사용할 수 없음, 
               // [오류]: 포인터와 달리 자신의 주소를 변경할 수 없음
}

3) 이해한 내용 정리

  • 자료형이 같은 변수들 끼리 그룹화 시켜 놓은 형태를 배열 이라고 한다.
  • 배열은 컴파일 할 시 같은 자료형끼리의 연산을 할 경우 좀 더 간결하게 하기 위해서 컴파일 명령에서 정해준 자료형
  • 배열은 같은 자료형의 그룹화 형태이므로 동일한 크기의 메모리를 가지고 있음. 따라서 주소 지정자(*)를 통해 나타낼 수도 있고, "[ ]"를 사용하여 해당 인덱스에 해당되는 값을 넣어서 표현할 수도 있음
// data -> char*
char data[5] = {0, };
// *(name + i) -> name[i]
*(data + 0) = 2;    -->   data[0] = 2;
*(data + 1) = 3;	-->   data[1] = 3;
*(data + 2) = 5;	-->   data[2] = 5;
*(data + 3) = 4;	-->   data[3] = 4;
*(data + 4) = 1;	-->   data[4] = 1;
  • 포인터 연산자를 사용하면서 배열의 원소에 접근할 경우 다음과 같이 표현할 수 있음
char data[5] = {2,4,5,3,1};
char* p;

p = &data[0]; // *(&data + 0) -> &*(data + 0) -> data
p = data;

p = &data[1]; // *(&data + 1) -> &*(data + 1) -> data +1
p = data + 1;

4) 출처

본 작성글은 금배씨 강의 영상 중 "배열" 강의를 참조하여 작성된 게시글 입니다.

profile
EasyWin32를 통해 C언어를 공부하고 있습니다~

0개의 댓글

관련 채용 정보