배열(Array)
배열은 변수들을 연속으로 선언해서 일괄적으로 사용하는 자료형입니다. 배열은 일차원 배열과 다차원 배열로 나뉘며, 앞에서 공부할 때 몇번 활용한 적이 있습니다. 배열 없이 정수형 변수 5개를 선언할 경우 int a,b,c,d,e; 처럼 일일이 직접 선언해야하는데 배열을 사용하면 int a[5]; 처럼 한번에 선언할 수 있습니다. 배열을 전달할 경우 참조 전달이 되기 때문에 *이나 &를 붙이지 않아도 됩니다.
- 배열
배열의 사용은 아래와 같습니다. 인덱스는 0부터 시작하며, 변수도 사용 가능합니다. 한가지 주의할 점은 배열은 한가지 자료형으로만 구성해야하며, 선언된 배열의 길이를 초과하는 인덱스를 사용하면 안됩니다.
----------------------------------------------------------------------------------------
타입 변수명[인덱스]
int a[5];
int b[];
int c=5;
int d[c];
------------------------------------------------------------------------------------------
배열에 값을 넣을 때, 초기화하면서 선언할수는 있지만, 선언한뒤에 값을 한번에 넣지는 못합니다.
------------------------------------------------------------------------------------------
int a[3]={1,2,3}; (가능)
int b[3];
b={1,2,3}; (불가능)
→ b[0]=1; b[1]=2; b[2]=3; (가능) b[3]=4: // 배열의 길이를 초과하므로 불가능
------------------------------------------------------------------------------------------
- 다차원 배열
다차원 배열은 배열을 원소로 가지는 배열을 뜻합니다. 아래와 같이 사용하며 부분적으로 초기화가 가능합니다.
------------------------------------------------------------------------------------------
구분 |
첫번째 |
두번째 |
세번째 |
a[1] |
1 |
2 |
3 |
a[2] |
4 |
5 |
6 |
a[3] |
7 |
8 |
9 |
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
구분 | 1번째 | 2번째 | 3번째 |
a[1] | 1 | 0 | 0 |
a[2] | 4 | 5 | 0 |
a[3] | 7 | 8 | 9 |
------------------------------------------------------------------------------------------
------------------------------------------------------------------------------------------
구분 |
1번째 |
2번째 |
3번째 |
4번째 |
5번째 |
6번째 |
7번째 |
8번째 |
a[1] |
r |
e |
d |
\0 |
\0 |
\0 |
\0 |
\0 |
a[2] |
s |
k |
y |
b |
l |
u |
e |
\0 |
a[3] |
m |
i |
n |
t |
\0 |
\0 |
\0 |
\0 |
------------------------------------------------------------------------------------------
배열을 이용해 16진수를 입력받아 10진수로 변환해주는 소스코드를 작성해 봤습니다.
------------------------------------------------------------------------------------------
#pragma warning(disable:4996)
int main()
{
char a[] = { '0','1', '2', '3', '4', '5', '6', '7', '8', '9', 'A', 'B', 'C', 'D', 'E' ,'F'}; //16진수 배열
char input[3]; // 입력을 받는 배열
int i, j;
int num = 0;
printf("10진수로 변환할 16진수를 입력하세요 : ");
scanf("%s", input);
for (i = 0; input[i] != '\0'; i++) // 입력한 배열의 문자가 널문자가 아닐때까지 반복
for (j = 0; j < 16; j++) // 0~16까지 같은수를 찾을때까지 반복
if (input[i] == a[j])
num = num * 16 + j;
printf("십진수 : %d \n", num);
return 0;
}
------------------------------------------------------------------------------------------
위의 코드를 실행하면 아래와 같은 결과가 출력됩니다. A1을 입력했을때, 'A'는 배열 a의 10번째 이므로 j가 10이되고 num=0*16+10이되서 10이되고, '1'은 배열a의 1번째이므로 다시 num=10*16+1이되서 161이 출력됩니다.
스타일 C프로그래밍 저.김종훈,김종진 출.WellBook
'언어 > C' 카테고리의 다른 글
[C] 배열과 포인터 (3) | 2016.12.25 |
---|---|
[C] 포인터 (0) | 2016.12.23 |
[C] 디버깅 (0) | 2016.12.21 |
[C] 매개변수 전달 방식 (0) | 2016.12.20 |
[C] 함수(2) (0) | 2016.12.20 |