#배열
같은 형태의 많은 데이터를 반복문으로 처리하기 위해서 메모리에 연속적으로 저장해놓고 쪼개서 사용하는 방법
요소의 자료형에 이름을 붙이고 필요한 요소의 개수를 표시한다.
#변수 vs 배열
변수를 선언하면 각 변수는 독립적인 저장 공간을 갖고 각각의 이름을 사용한다.
반면 배열은 저장 공간이 연속으로 할당되며 배열명이 전체 공간의 이름이 된다.
#배열요소
배열의 나누어진 조각.
배열요소는 배열명에 첨자를 붙여 표현하며 첨자는 0부터 시작한다.
#배열 선언시 vs 배열 요소 사용시
배열을 선언할 때 []안의 숫자는 배열 요소의 전체 개수를 표시하며,
배열을 사용할 때는 각 요소가 배열에서 몇 번째에 있는지를 의미한다.
#첨자
배열에서의 위치.
배열의 첨자는 0부터 시작하므로 최대 '배열 요소 개수 - 1'까지만 사용한다.
#배열 초기화
최초 할당된 저장 공간에는 쓰레기 값이 저장되어있어서 원하는 값을 가지기 위해 선언과 동시에 초기화가 필요.
배열의 초기화는 선언시 최초 한 번만 가능하고 그 이후에는 배열요소에 일일이 값을 대입해야 한다.
1)초기화1
int arr1[5] = {1,2,3,4,5};
초기값은 첫번째 요소부터 차례로 초기화된다.
2)초기화2
초기값이 배열 요소의 개수보다 적은 경우입니다.
int arr2[5] = {1, 2, 3};
왼쪽부터 차례로 초기화하고 남은 배열 요소는 모두 0으로 채운다.
3)초기화3
자동 초기화 기능을 사용하면 배열 요소 개수가 아무리 많아도 모든 요소를 쉽게 0으로 초기화할 수 있다.
int arr2[1000] = {0};
4)초기화4
배열 요소 개수가 생략된 형태
int arr3[] = {1,2,3};
컴파일러는 초깃값 개수만큼 배열 요소 개수를 정하고 저장 공간을 할당합니다.
5)초기화5
double형 배열과 char형 배열을 선언하고 초기화합니다.
각각의 자료형에 맞게 double형 배열은 실수 값으로 초기화하고 char형 배열은 문자로 초기화합니다.
#sizeif
배열 요소의 개수를 직접 계산하여 반복문에 사용하는 방법.
sizeof(배열명)/sizeof(배열 요소)
sizeof 연산자를 배열명에 사용하면 배열 전체의 크기를 바이트 단위로 계산하는데, 이 값을 배열 요소 하나의 크기로 나누면 배열 요소의 개수를 구할 수 있다.
이렇게 구한 배열 요소의 개수를 각 반복문의 반복 횟수로 사용하면, 나중에 배열 선언문에서 요소의 개수를 바꾸더라도 나머지 코드를 수정할 필요가 없다.
#char형 배열
저장할 문자열의 길이보다 최소한 하나 이상 크게 배열을 선언하는 것이다.
여분의 공간이 필요한 이유는 널 문자(\0)를 저장하기 위함.
1)배열의 크기는 최대한 넉넉하게 선언한다.
2)배열 요소의 개수는 최소한 '문자열 길이+1'이어야 한다.
#널 문자
초기화된 문자들은 배열의 처음부터 차례로 저장되어 문자열을 만들고 남는 배열요소에는 자동으로 0이 채워진다.
모든 문자는 아스키 코드 값으로 저장되므로 결국 널 문자는 아스키 코드 값이 0인 문자로 '\0'으로 표현한다.
이러한 널 문자는 문자열의 끝을 표시하는 용도로 쓰인다.
할당된 배열에 널 문자가 없으면 이어지는 메모리 영역까지 쓰레기값을 출력하고 때로는 메모리 접근 에러가 발생한다.
#strcpy
새로운 문자열을 저장하는 함수로, 저장할 문자열의 길이를 파악하여 딱 그 길이만큼만 char형 배열에 복사하고 문자열 끝에 널문자도 자동으로 붙여준다.
strcpy(저장될 배열명, 저장할 문자열);
첫번째 인수로는 저장될 곳의 배열명을 주고 두번째 인수로는 저장할 문자열을 사용한다.
첫번째 인수는 문자열을 모두 저장할 수 있도록 충분히 커야 한다.
두번째 인수는 문자열 상수뿐만 아니라 char형 배열의 배열명도 사용할 수 있다.
#string.h
문자열을 다루는 함수들의 원형을 모아 놓은 것으로 strcpy 함수에 접근하기 위해 사용.
#gets
빈칸을 포함하여 한 줄 전체를 문자열로 입력한다.
get(str);
문자열 입력 중간에 빈칸이나 탭 문자를 사용할 수 있으며, enter를 누르기 전까지 전체를 하나의 문자열로 배열에 저장한다. 물론 마지막에 널 문자를 붙여서 문자열의 끝을 표시한다.
입력한 배열의 크기보다 긴 문자열을 입력하면 배열을 벗어난 메모리 영역을 침범할 가능성이 있기에 항상 배열의 크기를 고려한다.
#puts
문자열 상수나 char형 배열의 배열명을 주면 문자열을 화면에 출력하고 자동으로 줄을 바꿔준다.
'Lobo's study room > [혼공단]c언어스터디' 카테고리의 다른 글
[6주차]포인터란? (0) | 2022.03.04 |
---|---|
[4주차]함수의 유형 (0) | 2022.03.03 |
[3주차]혼공 용어노트 정리 (0) | 2022.03.03 |
[2주차]3.변수와 데이터 입력 && 4.연산자 (0) | 2022.02.24 |
[1주차]Visual study 설치 인증 및 스터디 계획 (0) | 2022.01.16 |