Study/C++

[C++]04.1 복합데이터형 - 배열

SigmoidFunction 2023. 3. 9. 13:16
728x90

배열(array)은 데이터형이 같은 여러 개의 값을 연속적으로 저장할 수 있는 데이터구조

 

배열 선언에서는 세 가지를 선언함

  • 각 원소에 저장될 값의 데이터형
  • 배열의 이름
  • 배열 원소의 갯수
// sample

short month[12]

// short - 데이터형
// month - 배열이름
// 12 - 배열원소 갯수

원소 갯수를 나타내는 곳은 정수나 const와 같은 기호상수 또는 컴파일 시에 값이 결정되는 8*sizeof(int)같은 상수 수식이어야함.

프로그램이 실행되는 동안 값이 결정되는 변수는 X

그러나 new 연산자를 사용하여 이러한 제약을 회피가능

 

배열은 데이터형과 배열이 조합된 복합데이터형

 

float chicken[30] → float형의 배열

int toto[20] → int형의 배열

 

배열의 인덱스는 항상 0부터 시작한다.

 

 

 

#include <iostream>
int main()
{
    using namespace std;
    int yams[3];        // 3개의 원소를 가진 배열 생성
    yams[0] = 7;        // 첫번째 원소에 값을 대입
    yams[1] = 8;
    yams[2] = 6;

    int yamcosts[3] = {200, 300, 50};   // 배열을 생성하고 초기화한다.
    // 배열 초기화가 안된다면 static int yamcosts[3]을 사용할 것

    cout << "Total Potatoes = ";
    cout << yams[0] + yams[1] + yams[2] << endl;
    cout << yams[1] << "pieces packaging is ";
    cout << yamcosts[1] << "won each.\n";
    int total = yams[0] = yams[0] * yamcosts[0] + yams[1] * yamcosts[1];
    total = total + yams[2] * yamcosts[2];
    cout << "Three packages total price is " << total << "won.\n";
    cout << "\nyams array of size is " << sizeof yams;
    cout << "bytes.\n";
    cout << "each element size is " << sizeof yams[0];
    cout << "bytes.\n";
    return 0;
}

Total Potatoes = 21
8pieces packaging is 300won each.
Three packages total price is 4100won.

yams array of size is 12bytes.
each element size is 4bytes.

 

이러한 결과가 나온다!

 

yams라는 배열은 배열을 생성하고 원소들을 각각 넣어주었고 yamscost는 배열 선언과 동시에 배열의 값들을 넣어주었음. 

배열 원소의 값은 정의하지 않으면 미확정인 상태로 남는데 그 메모리 위치에 전부터 남아있던 쓰레기들을 값으로 취한다.

 

 

 

int sam[4] = {3,5,19,4};	// 올바른 방법
int sam[4];					// 올바른 방법
sam[4] = {4,6,7,3};			// 틀린 방법
sam = toy;					// 틀린 방법


// 모든 배열을 0으로 초기화하는 방법
long totals[300] = {0};
long totals[300] = {};
long totals[300] {};

// 대괄호를 비우면 배열 갯수에 따라 자동으로 설정한다.
short sample[] = {1,5,3,2}  // 배열 원소 4개 짜리 sample 배열 생성

다만, 0일 경우만 모두 초기화되고 1이 되면 첫번째만 1로 설정되고 나머지는 여전히 0으로 설정해둔다.

 

 

728x90