본문 바로가기
language/C

배열(array)

by abstract.jiin 2022. 9. 13.
  1. 배열
    1. 배열 
    2. 배열 선언
    3. 배열 이름[index]
  2. 배열 초기화 예시

 

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