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 |