for 반복문을 c++에서 이용해보자.

#include <iostream>
using namespace std;

int main(){
    char arr[10]; // 배열로 선언 : 자료형 배열이름 [배열크기]
    int i;

    for (i=0; i<10; i++){ // 첫번째 조건부터 시작, 두번째 조건이 참일 경우 loop body 진행하고 세번째 조건문 실행, i++; 는 i += 1;과 같음
      arr[i] = 'a'; // loop body
    }

    for (i=0; i<10; i++)
    cout << arr[i] << endl; // state가 하나뿐이면, {}안에 안넣어도 됨!

    return 0;
}

배열

  • C++ 에서는 배열을 만들 때, 미리 타입과 개수를 선언해주어야함.
    • ex) int graed [5] 타입 배열이름 배열크기
  • 배열에서 원소를 넣지않으면 0 으로 알아서 넣음
  • 배열의 크기가 주어지지않으면, 자동적으로 초기 값의 개수만큼 배열의 크기로 잡힌다.
    • ex) int grade [] = {10, 20, 30, 40, 50, 60}; 이렇게하면 알아서 크기가 6으로 잡힘

2차원배열

int s[10]; // 1차원배열
int s[3][10]; // 2차원 배열
int s[5][3][10]; // 3차원 배열

int s[][5] = {  // 다차원 배열에서 첫번째 차원은 생략가능 나머지 차원은 생략 할 수 없음!!!! 
 { 0, 1, 2, 3, 4}, // 첫번째 행의 원소들의 초기값
 { 10, 11, 12, 13, 14}, // 두번째 행의 원소들의 초기값
 { 20, 21, 22, 23, 24}, // 세번째 행의 원소들의 초기값
};

2차원 배열 연습

#include <iostream>
using namespace std;

int main(){
    int arr[2][3] = {
      {10, -1, 3},
      {2, 5, 6}
    };

    int i, j;

    for (i=0; i<2; i++)
      for (j=0; j<3; j++) {
        cout << "arr[" << i << "][" << j << "] value: ";
        cout << arr[i][j] << " address: " << &arr[i][j] << endl;
      }
    return 0;
}

C++ 는 cout 으로 arr[ 따로, ][ 따로, ]따로 , 싹다 따로 <<를 이용해서 넣어줘야 햐는구나!

실행결과

arr[0][0] value: 10 address: 0x7ffe7badd250
arr[0][1] value: -1 address: 0x7ffe7badd254
arr[0][2] value: 3 address: 0x7ffe7badd258
arr[1][0] value: 2 address: 0x7ffe7badd25c
arr[1][1] value: 5 address: 0x7ffe7badd260
arr[1][2] value: 6 address: 0x7ffe7badd264

여기서 주목해야 할 점 : 주소가 1씩 안바뀌고 4씩 바뀐다

이유 : arr의 각각의 원소가 int타입으로 저장되어있고, int type 는 32bit 즉 4 byte 에 저장되기때문에,
주소는 byte로 저장되는데, 4바이트씩 쓰니까 4씩 증가하는거

행우선저장, 열우선저장

{{ 10, -1, 3 },
{ 2, 5, 6 }}

이런 배열이 있을때, 컴터는 저장을 1차원으로 밖에 못하니까,
C 언어에서는 row major storage 행 우선저장으로 한다. 즉
10, -1, 3, 2. 5. 6 요로코롬 저장한다는 뜻

질문!

int arr[3][5] = {
{1, 2, 3},
{4, 5, 6},
{7, 8, 9},
}; 

라면 어떻게 저장됨? 빈 곳은 0으로 저장해놓고 가나? 사실 맞을 것 같긴함

 

A) 맞음. 시스템에서 메모리는 그 공간만큼 미리 할애 함.

'TIL > [C++ 프로그래밍} TIL' 카테고리의 다른 글

TIL (22.03.21)  (0) 2022.03.21
TIL (22.03.20)  (0) 2022.03.21
TIL 4 (22.03.16)  (0) 2022.03.16
TIL 2 (22.03.14)  (0) 2022.03.14
TIL 1 (22.03.14)  (0) 2022.03.14