예를 들어 10개의 변수를 선언하기 위해서는 int n1, n2... n10까지 일일이 선언해줘야 할까?
→ 배열(Array)을 이용하면 더 간단한 형태로 나타낼 수 있다.
배열이란?
같은 타입/자료형의 값들을 순차적, 연속적으로 저장할 수 있는 메모리 공간을 뜻한다.
배열 선언방법
- 배열을 구성하는 자료형, 즉 배열에 저장된 각 요소의 데이터 타입.
- 배열의 이름
- 배열의 길이, 변수의 개수에 대한 유무
Example: int arr[10]
배열의 길이(변수의 개수): 10
int형 타입(자료형): 4바이트
→ 4 X 10 = 총 40 바이트 크기가 메모리 공간에 할당되는 모습을 알 수 있다.
배열의 크기: Sizeof 연산자 사용
※ 배열의 길이 = sizeof(배열의 이름)/sizeof(자료형의 크기)
배열의 사용목적:
- 다수의 변수가 할 수 없는 일을 배열을 통해 해결가능.
- 1, 2차원 등 다양한 형태의 배열이 존재하기 때문.
선언된 (1차원) 배열의 접근
int arr[10]; 로 선언되었다고 가정하자!
선언이 되면 당연히 접근도 가능해진다(접근이란, 값을 저장하거나 저장된 값에 참조)
arr[0] = 10; → 배열의 위치 즉, 배열의 요소를 지정
인덱스 [0] = 배열의 첫 번째 요소를 의미.
선언과 접근의 인덱스 차이점
배열 선언: int arr[10];
- 배열의 길이가 10을 의미함.
배열의 접근: int arr[0] = 10; int arr[1] = 20;
- 배열의 첫 번째 요소에 10 저장, 배열의 두 번째 요소에 20 저장을 의미함.
+ for문을 이용한 배열의 특징 이해
= i가 0, 1, 2, 3일 때 배열의 모든 요소에 순차적 접근이 가능.
배열로 선언과 동시에 초기화
int arr1[5] = {1, 2, 3, 4, 5};
배열의 길이가 5이니, 초기화할 리스트의 값들도 5개 필요.
① int arr[4] = {1, 2};
초기할 리스트의 값들이 배열의 길이보다 적은 경우, 부족한 리스트 값들은 0으로 채워짐
② int arr[ ] = {1, 2, 3, 4};
초기화 리스트는 존재하지만, 배열의 길이가 생략된 경우, 컴파일러가 배열의 길이 정보를 알아서 채움.
배열을 이용한 문자열 표현방법
char str[30] → 해석: 길이가 30보다 작은 문자열만 저장한다는 의미
= C언어는 char형 배열을 이용한 문자열 표현방법 제공.
char str[7] = "Simple";
길이가 7인 배열에 문자열 길이 6인 "Simple"저장.
주의사항: 1) char str[7] ; str = "Simple"; →불가능
C언어에서 문자열은 선언과 동시에 초기화만 가능(단, 각 요소에 접근해서 한 문자씩 변경가능)
2) '\0'(널문자): 문자열의 끝에 항상 삽입됨.
문자열의 끝을 표현하기 위해서 사용되고, 그래서 문자열 Simple을 담기 위한 배열의 길이는 6이 아닌 7.
- 메모리 공간에 문자열이 저장되면 끝에는 null 문자가 자동 삽입됨.
+ Null문자 활용한 문자열 길이 구하는 법
길이가 10인 배열 arr을 while문으로 통해서 첫 번째 요소부터 접근
= 최종적으로 '\0'문자 전까지의 문자열 길이를 알 수 있음.
scanf 함수를 이용한 문자열 입력방법
scanf("%s", str) : %s와 배열 이름만 입력(&연산자 X)
※ scanf로 문자열 입력 시 Example: "He is a boy"
printf 출력 결과: He
= C언어는 별도의 공백을 포함한 문자열 함수가 존재! 즉, 공백이 포함되지 않은 문자열만 출력 가능.
'C Programming' 카테고리의 다른 글
[C언어] 함수에 대한 나만의 정리 (0) | 2025.03.29 |
---|