은근한

C언어 4. 배열(일차원배열,이차원배열,다차원배열,구구단) 본문

카테고리 없음

C언어 4. 배열(일차원배열,이차원배열,다차원배열,구구단)

EsJoo 2013. 10. 26. 11:02

배열


배열이란??


배열이란 하나의 이름으로 연속적인 메모리 공간을 할당받는 변수의 집합을 말한다.


배열 형식


데이터형 배열이름 [필요한 배열 개수];       int arr[10];



ㆍ데이터형

일반 데이터형과 같이 약속된 예약어, int,char,float등..


 ㆍ배열이름

변수이름지정과 같은 방식


 ㆍ필요한 배열개수

배열로 사용할 방의 개수를 정한다. 이때 지정한 개수의 각 방의 위치를 나타내는 숫자를 첨자라 하며,


첨자는 0부터 지정한 개수 바로 전까지 표시 


ex) char test[3]; 이선언문은 test 이름으로 연속된 기억장소 3개를 받는다. test[0],test[1],test[2]

 

 

ex) int x[3],int y, int z; 기억장소 비교

 

 메모리[기억장소]

 int x[0]

 int x[1]

 int x[2]

 

 int y

 

 

 

 int z


배열은 연이은 공간에 메모리가 할당 되는것을 볼수 있다. 일반적인 변수는 할당된 공간이 규칙없이 임의대로 설정 된다.

 

 

ex)

 

#include<stido.h>

 

void main()

{

int a,i;

char b;

float c;

int d[3];

 

printf("a의 주소 %d\n",&a);    //주조지정연사자인 &를 사용한다.

printf("b의 주소 %d\n",&b);

printf("c의 주소 %d\n",&c);

 

for(i=0;i<3;i++)

printf("d[%d]의 주소:%d\n",i,&d[i]);

}

//출력되는 주소의 값은 각 시스템마다 다르게 나타난다. 즉, 하는 장소에 따라 다르게 나타난다는 것이다.

 

위를 실행해보면 배열을 제외한 나머지 기억장소는 특정한 규칙이 아닌 임의로 각 기억장소에 할당 되는것을 알수있다.

 

 

 

일차원배열

 

일차원배열은 첨자가 하나로 이루어진 배열을 말한다. a[i]의 형태 일차원 배열은 하나의 첨자로 이루어져 단일 반복문으로 해당 처리가 가능

 

ex) 흔한 정수를 입력받아 총점과 평균을 구하자

 

#include<stido.h>

 

void main()

{

int score[10],i;    //score[10] 첨자에 10을 준것은 일차원 배열의 한계점이라고 해야하나 배열을 미리 지정해야 쓸수있다.

int sum=0;    //총합

float average = 0;//평균이므로 소수점이 나올수 있기네

 

for(i=0;i<10;i++){

printf("점수입력 %d : ",i+1);

scanf("%d",&score[i]);

sum = sum + score[i];    //점수를 누적시킨다

}

 

average = sum/10;

printf("총점은 %d\n",sum);

printf("평균은 %f\n",average);

}

 

다차원 배열 및 이차원 배열

 

다차원 배열은 첨자가 둘이상으로 구성된 배열을 말한다. 다차원 배열중 많이 쓰니는 이차원배열로써 형식은 arr[i][j]의 형태이다

 

첫번째 첨자는 행을 표시하며 두번째 첨자는 열을 표시한다.

 

ex) int arr[2][3];

 

 

 int arr[2][3]

행 

행 

 열

  int arr [0][0]

 int arr [0][1]

 int arr [0][2] 

 열

  int arr [1][0]

 int arr [1][1] 

 int arr [1][2] 


*tip

이차원 배열의 주소는 첨자가 행,열 2개가 있다고 해서 열에따라 int arr[0][i] 메모리 int arr[1][i] 메모리가 있다고 생각할수 있는데

 

실직적으로는

 

 

 메모리

 arr[0][0]

 arr[0][1]

 arr[0][2]

 arr[1][0]

 arr[1][1]

 arr[1][2]

 arr[2][0]

 arr[2][i]..

이런식으로 메모리는 붙어 있다. 우리가 보기 편하게 저렇게 나눈것뿐 컴퓨터는 메모리를 일렬로 생각 하고 있다.