C Programming

[C언어] '1차원 배열(array)'의 이해

All리얼 개발자 2025. 5. 16. 06:00

 


예를 들어 10개의 변수를 선언하기 위해서는 int n1, n2... n10까지 일일이 선언해줘야 할까?


→ 배열(Array)을 이용하면 더 간단한 형태로 나타낼 수 있다.  

 

 

 

배열이란?

같은 타입/자료형의 값들을 순차적, 연속적으로 저장할 수 있는 메모리 공간을 뜻한다.

 

배열 선언방법

  1. 배열을 구성하는 자료형, 즉 배열에 저장된 각 요소의 데이터 타입.
  2. 배열의 이름
  3. 배열의 길이, 변수의 개수에 대한 유무  

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