Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- 코멧 접이식 투명 리빙박스 56L 대형 2개입
- ipTIME 유무선공유기
- 샤오미 미밴드 7 스마트밴드
- 23SS 스트라이프 오버핏 셔츠 723033 V2L30 9066
- 굿아이템 양면오픈형 투명 접이식 리빙박스 폴딩박스 옷정리함 수납박스 펜트리수납함
- [제이앤제나] 허리에 무리없는 신생아부터 역류방지쿠션_앨리펀블루 역류방지쿠션
- 22FW 로고 패치 포켓 체크 셔츠 2F000 03 M2359 F41
- 톰브라운 명품톰브라운 23SS 더블페이스 니트 아우터형 포켓 셔츠 MJT291A 07545 415
- 긍정
- 남쪽나무 세면대 세면대 세트 (스마트거울) 벽걸이세면대 이케아세면대 세면기
- 1개
- 두칸 프릴 오버핏 후드티
- 잡잡 NBR 요가매트 스탠다드 운동매트 10mm 퍼플
- 러버메이드 벤티드 브루트(75L) 원형 컨테이너 리빙박스
- 8052 블랙라인 정사각 세면기
- 미네 리빙다이닝 6인 원목 코너형 식탁세트(소파형)
- 반스 올드스쿨 VN000D3HY28
- 대림디움 대림바스플랜 PL-3070 탑카운터형 세면대/욕실/화장실/세면도기
- 네스파 다야몬드은박 후드티
- 삼성 갤럭시워치5
- 더블탭스 22SS 정글 01 셔츠 WTAPS JUNGLE 01 GREIGE M
- 내셔널지오그래픽 피너스 빅로고 라운드넥 긴팔 티셔츠 카본 블랙
- 봄봄 골드라인 4023G 탑볼세면대 화이트골드 카운타 도기볼 카페세면대
- ChatGPT
- list #pop #remove #del #append #insert #list형 #파이썬 파이썬 기본 문법 #파이썬 list
- 올리비아 스텐 세면대 세트
- 위드리빙 대용량 옷 수납 방수 바구니
- 22FW 이바나 빈티지 체크 셔츠 더스트핑크 8054631
- 리빙앤트리 펠리컨 박스 대
- 오토비 AZ100TR 32G 전후방 FHD 2채널 트럭 화물차 전용 블랙박스 보증기간 2년 20m케이블 포함 후방 적외선 방수 AS 2년보장
Archives
- Today
- Total
냥집사의 개발일지
C언어 - 배열 (Array) : 배열의 선언 & 초기화 본문
반응형
안녕하세요~ 오늘은 배열에 대해서 정리해보려 합니다.
C언어를 처음 배울 때 포기하게 되는 부분 중 하나인데요.
알기 쉽게 예제를 보며 공부해봅시다~
1. 배열의 선언
아래 코드처럼 배열을 선언하기 위해서는 "자료형 배열이름[배열 크기]" 를 적어주면 됩니다.
int arr[3]; // data type : int, array name : arr, array size : 3
double arr2[6]; // data type : double, array name : arr2, array size : 6
2. 배열 초기화
아래 코드처럼 배열을 선언한 뒤 중괄호 안에 초기값을 나열하면 됩니다.
int arr[3] = {0,1,2}; // data type : int, array name : arr, array size : 3
아래 코드를 입력해주어 배열이 잘 초기화 되었는지 확인해보겠습니다.
(중요!!) 배열의 요소는 배열의 크기 -1까지 접근 가능합니다!!
ex) int arr[5]; 로 선언 시 arr[0]부터 arr[4]까지 접근 가능
#include <stdio.h>
int main(){
int arr[3] = {0,1,2}; // data type : int, array name : arr, array size : 3
for(int i=0; i<3; ++i){
printf("arr[%d] : %d\n", i, arr[i]); //print arr[0], arr[1], arr[2], respectively
}
return 0;
}
의도한 대로 arr[0]에 0, arr[1]에 1, arr[2]에 2 값이 들어갔습니다.
중괄호 안에 초깃값을 나열하면 앞에서부터 "차례로" 초기화되는 것을 확인할 수 있었습니다.
여기서 질문!!
만약 중괄호 안에 초깃값이 배열의 크기보다 작으면 남은 배열의 요소에는 어떤 값이 들어가게 될까요?
int arr[6] = {0,1,2}; // data type : int, array name : arr, array size : 6
남은 배열의 요소에는 0으로 초기화 됩니다!!
여기서 질문22!!
배열의 크기보다 큰 배열 요소 접근하면 어떻게 되나요?
배열의 크기 6보다 큰 배열 인덱스 9까지 출력해보겠습니다.
#include <stdio.h>
int main(){
int arr[6] = {0,1,2}; // data type : int, array name : arr, array size : 6
for(int i=0; i<10; ++i){
printf("arr[%d] : %d\n", i, arr[i]);
}
return 0;
}
arr[6]부터 arr[9]까지는 임의의 쓰레기 값이 들어간 것을 확인할 수 있습니다.
여기서 컴파일 오류가 왜 안나지 생각하시는 분들도 있을 거 같은데요!!
컴파일 오류가 안나는 이유는 arr[index]는 주소를 표현하는 문법으로 해당 주소에 대한 유효성 검사는
Compiler가 진행하지 않기 때문입니다. 따라서 개발자분들이 직접 예외처리가 꼭 필요한 부분입니다!!
추가로 배열 초기화하는 또 다른 방법!!
아래 코드처럼 배열의 선언과 초기화가 동시에 이뤄질 때는 배열의 크기를 생략 가능합니다.
Compiler가 배열의 크기를 결정해주기 때문입니다!!
int arr[] = {0,1,2}; // data type : int, array name : arr, array size : 3
배열을 출력할 때 빠질 수 없는 연산자가 있죠? 바로 sizeof인데요!
#include <stdio.h>
int main(){
int arr[] = {0,1,2}; // data type : int, array name : arr, array size : 3
for(int i=0; i<sizeof(arr)/sizeof(arr[0]); ++i){
printf("arr[%d] : %d\n", i, arr[i]);
}
printf("sizeof(arr) : %d byte\n", sizeof(arr));
printf("sizeof(arr) : %d byte\n", sizeof(arr[0]));
return 0;
}
sizeof는 파라미터의 크기를 반환하는 연산자입니다.
배열 총 요소 개수 = 배열의 크기 / 배열 요소의 크기이니까 반복문 조건식으로 이용하면
sizeof 연산자를 이용하여 배열의 요소를 모두 출력할 수 있겠죠?
오늘은 배열에 대해서 정리해보았습니다.
배열의 선언, 배열의 초기화를 중점적으로 알아보았는데요.
워낙 배열의 범위가 넓은 만큼 다음 포스팅에서도 배열에 대해 더 알아보도록 하겠습니다. 그럼 좋은 하루 보내세요~
'C언어' 카테고리의 다른 글
C언어 - 포인터 (Pointer) : 기본 개념 (0) | 2022.09.07 |
---|---|
C언어 - 배열 (Array) : 문자 배열의 선언 & 초기화 (0) | 2022.09.06 |
C언어 - VSCode C/C++ 개발환경 세팅 : C / C++ Extension 설치 및 json 파일 세팅(Windows) (0) | 2022.09.04 |
C언어 - VSCode C/C++ 개발환경 세팅 : MSYS2(mingw64 Compiler) 설치 (Windows) (0) | 2022.09.03 |
C언어 - VScode 설치 메뉴얼 (Windows) (0) | 2022.08.27 |
Comments