// 9-1 : 배열의 사용
int main()
{
int kor_scores[5];
kor_scores[0] = 100;
kor_scores[1] = 88;
kor_scores[2] = 92;
kor_scores[3] = 40;
kor_scores[4] = 76;
return 0;
}
/*
변수를 몇개 만들어 대괄호 안에 적어준다.
*/
// 9-2, 3 : 100번째 원소에 접근하기, 원소의 탐색
int main()
{
int kor_scores[5];
kor_scores[100] = 100;
return 0;
}
/*
접근위반하면 프로그램 갑자기 죽을 수 있다. (잘못된 원소에 접근)
올바른 범위 인덱스 사용은 개발자 책임이다.
*/
/*
--- 9-3 ---
원소 탐색법 알려준다.
for문 돌려서 원소 하나씩 출력하는게 전부다.
*/
// 9-4 : 배열의 초기화
#include <iostream>
using namespace std;
int main()
{
int kor_scores[5] = { 100, 88, 92, 40, 76 };
for (int i = 0; i < 5; i++)
{
cout << kor_scores[i] << "\n";
}
return 0;
}
/*
배열의 초기화. 한번에 가능하다.
배열의 크기보다 적게 입력되면, 입력되지 않은 값은 0으로 자동적으로 채워진다.
단, 아예 초기화 하지 않은 값은 쓰레기값을 가진다.
초기화시 배열 크기 지정하지 않아도 된다.
정의할 때 말고는 초기화 할 수 없다.
배열끼리 대입 불가능하다.
복사하고 싶다면 원소 하나씩 대입한다.
*/
// 9-5 : 배열의 원소 복사
int main()
{
int arrayA[3] = { 1,2,3 };
int arrayB[3];
// 복사
for (int i = 0; i < 3; ++i)
{
arrayB[i] = arrayA[i];
}
return 0;
}
/*
배열의 원소 복사
*/
// 9-6 : sizeof 연산자
#include <iostream>
using namespace std;
int main()
{
double d;
int i;
char a;
cout << sizeof(d) << "\n";
cout << sizeof(i) << "\n";
cout << sizeof(a) << "\n";
cout << "------" << "\n";
cout << sizeof(double) << "\n";
cout << sizeof(int) << "\n";
cout << sizeof(char) << "\n";
return 0;
}
/*
sizeof는 타입의 크기를 바이트 단위로 반환한다.
--- 결과 ---
8
4
1
------
8
4
1
*/
// 9-7 : 배열의 크기 확인
#include <iostream>
using namespace std;
int main()
{
// 배열 정의
char cArray[3] = { 'A', 'B', 'C' };
int iArray[4] = { 100, 200, 300, 400 };
double dArray[5] = { 0.1, 0.2, 0.3, 0.4, 0.5 };
// 출력
cout << sizeof(cArray) << "\n";
cout << sizeof(cArray[0]) << "\n";
cout << sizeof(cArray) / sizeof(cArray[0]) << "\n"; // 원소의 개수
cout << sizeof(iArray) << "\n";
cout << sizeof(iArray[0]) << "\n";
cout << sizeof(iArray) / sizeof(iArray[0]) << "\n"; // 원소의 개수
cout << sizeof(dArray) << "\n";
cout << sizeof(dArray[0]) << "\n";
cout << sizeof(dArray) / sizeof(dArray[0]) << "\n"; // 원소의 개수
return 0;
}
/*
배열의 크기와 개수를 알 수 있다.
--- 결과 ---
3
1
3
16
4
4
40
8
5
*/
// 9-8, 9 : 원소의 크기 10을 직접 적어준 경우, 원소의 크기를 컴퓨터가 계산한 경우
/*
예제 ex9-8은 스킵하였다.
for문에 배열의 원소 개수를 하드코딩 하였을 때,
코드 수정시 문제가 된다는 내용이다.
*/
#include <iostream>
using namespace std;
int main()
{
// 배열 정의
int array[] = { 1,2,3,4,5,6,7,8,9,10 };
for (int i = 0; i < sizeof(array) / sizeof(array[0]); ++i)
{
array[i] *= 2;
}
return 0;
}
/*
원소 개수만큼 반복된다.
sizeof의 활용이다.
*/
// 9-10 : NULL 문자의 중요성
#include <iostream>
using namespace std;
int main()
{
char ThisIsNotString[] = { 'H', 'E', 'L', 'L', 'O' }; // 문자의 배열
char ThisIsString[] = { 'H', 'E', 'L', 'L', 'O', '\0' }; // 문자열
cout << ThisIsNotString << "\n";
cout << ThisIsString << "\n";
return 0;
}
/*
--- 결과 ---
HELLO儆儆儆儆儆儆儆儆儆儆儆儆儆?ELLO
HELLO
-------
문자열은 마지막 문자가 반드시 \0 이어야 한다.
NULL문자라고 부른다. 이것은 약속이다.
문자열은 반복명령을 통해 처리된다.
종료 조건이 NULL을 만날때까지인 것이다.
따라서 NULL이 없으면 이상한 문자가 찍힌다.
*/
// 9-11 : 문자열 리터럴의 사용
#include <iostream>
using namespace std;
int main()
{
char cArray1[] = "ABCDE"; // 문자열 상수로 배열 초기화
char cArray2[] = { 'A', 'B', 'C', 'D', 'E', 0 }; // 0으로 써도 똑같다. 하지만 \0으로 쓰는 것이 일반적이다.
// 크기 비교
cout << sizeof(cArray1) << "\n";
cout << sizeof(cArray2) << "\n";
// 4,5번째 원소 출력 비교
cout << cArray1[4] << (int)cArray1[5] << "\n";
cout << cArray2[4] << (int)cArray2[5] << "\n";
return 0;
}
/*
--- 결과 ---
6
6
E0
E0
------
쌍 따옴표 사용해 문자열 상수로 만든 경우,
자동으로 NULL이 붙는다.
두 배열은 크기와 내용이 완전히 동일하다.
*/
'C++ > 뇌를 자극하는 C++' 카테고리의 다른 글
[C++] 챕터 11 - 포인터 : 정보에 대한 정보 (0) | 2023.04.27 |
---|---|
[C++] 챕터 10 - 구조체 : 다양한 타입의 정보를 한 곳에 모으는 법 (0) | 2023.04.27 |
[C++] 챕터 8 - 성적표 프로젝트 Ver 1 (0) | 2023.04.25 |
[C++] 챕터 7-2 - 분기와 반복 : 프로그램의 흐름 조절 (0) | 2023.04.25 |
[C++] 챕터 7-1 - 분기와 반복 : 프로그램의 흐름 조절 (0) | 2023.04.25 |
댓글