- 배열
- 배열
- 배열 선언
- 배열 이름[index]
- 배열 초기화 예시
1. 배열(array)
배열(array)
한 번의 선언으로 같은 자료형의 데이터 공간을 메모리에 연속저으로 생성
변수와 같은 데이터를 담은 공간을 여러개 묶어놓은 형태
배열 선언(생성)
자료형 배열 이름[크기]
ex) char i[10]; char형 데이터가 들어갈 공간 10칸 묶음 생성
배열의 요소(=배열 내부 데이터) 사용
index 번호를 이용하여 내부의 특정 데이터를 찾아간다.
배열이름[index]
*index: 배열 내부의 데이터를 찾아갈 수 있게 해주는 참조 숫자
모든 배열의 index는 0번 부터 시작
ex)
int ar[3];
ar <-배열 이름
| ? | ? | ? |
[0] [1] [2] <- index 번호
배열의 크기
배열의 크기는 자료형의 byte * 데이터 공간의 개수(칸 수)
ex)
int ar[3]; -> int:4byte * [3] =12byte
2. 배열 초기화
%d를 사용하여 출력이 가능한 이유는 배열의 자료형이 int 형이기 때문이다.
3칸짜리 배열은 0~2번 index를 사용한다.
int ar1[3];
ar1[0]=10;
ar1[1]=20;
ar1[2]=30;
printf("ar1[0]:%d\nar1[1]:%d\nar1[2]:%d\n",ar1[0],ar1[1],ar1[2]);
int ar1[3];
ar1 <-배열 이름
| 10 | 20 | 30 |
[0] [1] [2] <- index 번호
int ar2[3] ={1,2,3}; //배열 선언과 동시에 초기화
//ar2={4,5,6}; error - 이미 선언된 배열에는 여러 데이터를 일괄적으로 입력하는 것이 불가능하다.
printf("ar2[0]:%d\nar2[1]:%d\nar2[2]:%d\n",ar2[0],ar2[1],ar2[2]);
int ar3[] ={1,2,3,4}; //배열 선언할 때 칸 개수를 비우면 데이터 개수만큼 칸 생성
printf("ar3 size: %d byte\n",sizeof(ar3));
printf("ar3 공간개수: %d 개",sizeof(ar3)/sizeof(int));
printf("ar3[0]:%d\nar3[1]:%d\nar3[2]:%d\nar3[3]:%d\n",ar3[0],ar3[1],ar3[2],ar3[3]);
int ar4[3]={1};
/*배열 선언과 동시에 초기화 할때,
공간의 개수보다 적은 개수의 데이터를 넣으면
입력된 데이터는 앞쪽부터 채워지고 남은 공간은 0을 채운다. */
puts("");
printf("ar4 size : %d byte\n", sizeof(ar4));
puts("");
printf("ar4[0]:%d\nar4[1]:%d\nar4[2]:%d\n",ar4[0],ar4[1],ar4[2]);
int ar5[3]={0}; //모든 칸을 0으로 초기화
printf("ar5[0]:%d\nar5[1]:%d\nar5[2]:%d\n",ar5[0],ar5[1],ar5[2]);
배열의 칸 수는 무조건 상수값으로만 입력해야 한다.
아래의 ar6는 error code다
int size=3;
int ar6[size]={0};
첫 선언에서 칸 수 지정은 상수값만 써야하지만,
선언 이후에 변수로 인덱스 설정 가능하다.
int ar7[3]={0};
ar7[0] =11;
ar7[1] =22;
int idx=2;
ar7[idx]=33;
printf("ar7[%d]:%d\n",0,ar7[0]);
printf("ar7[%d]:%d\n",1,ar7[1]);
printf("ar7[%d]:%d\n",idx,ar7[idx]);
puts("");
printf("idx 주소 : %p\n",&idx);
printf("ar7 시작 주소:%p\n",ar7);
변수는 &기호를 쓰지만, 배열은 &기호를 쓰지 않는다.
배열 선언 후 index번호는 변수로 대체 가증
변수는 주소 표현을 위해 &기호를 사용해야하지만
배열은 &기호 없이 주소 표현
/* 결과 */
ar7[0]:11
ar7[1]:22
ar7[2]:33
idx 주소 : 000000000062FDBC
ar7 시작 주소:000000000062FDC0
'language > C' 카테고리의 다른 글
배열과 반복문 (0) | 2022.09.13 |
---|---|
_sleep(숫자) - 반복문 응용 (0) | 2022.09.13 |
continue / break / 삼항연산자 (0) | 2022.09.13 |
C언어 자판기 코드 (0) | 2022.09.07 |
반복 제어문 while (0) | 2022.09.07 |