Sunday, November 05, 2006
C언어] 1차원 배열 선언, 배열 초기화 예제: One-Dimensional Array Initialize
1차원 배열을 선언할 때에는
자료형 배열명[요소의 개수]
형식으로 지정합니다.
배열의 첫번째 요소의 번호는 1번이 아니고 0번입니다.
함수 외부에서 선언하면, 어떤 함수에서도 접근할 수 있는 "전역 배열"이 됩니다. 배열이 아닌 일반 변수도 마찬가지로, 함수 밖에서 선언하면 전역 변수가 되고 자동 초기화됩니다. 그렇지만 전역배열/전역변수를 사용하면 프로그램이 복잡하게 될 수 있기에, 되도록 사용하지 않는 것이 좋습니다.
물론 전역배열/변수를 사용해서 프로그램이 더 간결해진다면 괜찮겠지요.
파일명: 0.cpp
▶▶ C언어] 배열 포인터를 함수의 인수(파라미터)로 전달; Array Pass to a Function
▶▶ C언어] 2차원 배열 만들기, 초기화, 출력; Two Dimensional Array
자료형 배열명[요소의 개수]
형식으로 지정합니다.
배열의 첫번째 요소의 번호는 1번이 아니고 0번입니다.
함수 외부에서 선언하면, 어떤 함수에서도 접근할 수 있는 "전역 배열"이 됩니다. 배열이 아닌 일반 변수도 마찬가지로, 함수 밖에서 선언하면 전역 변수가 되고 자동 초기화됩니다. 그렇지만 전역배열/전역변수를 사용하면 프로그램이 복잡하게 될 수 있기에, 되도록 사용하지 않는 것이 좋습니다.
물론 전역배열/변수를 사용해서 프로그램이 더 간결해진다면 괜찮겠지요.
정수 일차원 배열 선언/초기화한 후 출력 예제
파일명: 0.cpp
#include <stdio.h>
int g[5]; // 전역 배열은, 배열 크기만 지정해 주면 자동으로 모두 0으로 초기화됨
int main(void) {
// 7개의 요소를 가진 정수 배열 선언하고, 초기화
int foo[7] = { 519, 31, 7988, 165326, 10, -24642, 134 };
// 다음과 같이 개수 지정을 생략해도, 초기화해 준 요소의 개수에 맞게 자동으로 정해집니다.
// int foo[] = { 519, 31, 7988, 165326, 10, -24642, 134 };
// 그런데 초기화하지 않고,
// int foo[];
// 이렇게 개수도 지정하지 않으면 unknown size (배열 크기를 알 수 없음) 에러가 납니다.
// 배열 출력
for (int i = 0; i < 7; i++)
printf("[%d] = %d\n", i, foo[i]);
/* 출력 결과:
[0] = 519
[1] = 31
[2] = 7988
[3] = 165326
[4] = 10
[5] = -24642
[6] = 134
*/
// 배열 요소 개수를 넘는 범위까지 출력하면
// 현재 메모리 속에 있는 임의의 쓰레기값이 출력되어 버림
for (int i = 0; i < 8; i++)
printf("[%d] = %d\n", i, foo[i]);
/* 출력 결과:
[0] = 519
[1] = 31
[2] = 7988
[3] = 165326
[4] = 10
[5] = -24642
[6] = 134
[7] = 4201876 <- 이것은 존재하지 않는 요소이며 지금 쓰레기값으로 채워져 있음
*/
// 이렇게 하면 8개 배열 요소가 모두 0으로 초기화됩니다.
int bar[8] = { 0 };
// int bar[8] = { 111, 222, 333 }; 이러면 333 뒤의 요소부터 끝까지는 모두 0으로 초기화됨
// int bar[8] = { 111, 222, 333, }; 이렇게 쉼표를 붙여서 뒤쪽의 나머지 요소 자동초기화를 명시적으로 나타낼 수도 있음
for (int i = 0; i < 8; i++)
printf("[%d] = %d\n", i, bar[i]);
/* 출력 결과:
[0] = 0
[1] = 0
[2] = 0
[3] = 0
[4] = 0
[5] = 0
[6] = 0
[7] = 0
*/
// 비주얼C++에서는 다음과 같이 해도 모두 0으로 초기화되더군요.
// int bar[8] = { };
// 전역 배열 출력: 이미 자동으로 초기화되어 있음
for (int i = 0; i < 5; i++)
printf("[%d] = %d\n", i, g[i]);
/* 출력 결과:
[0] = 0
[1] = 0
[2] = 0
[3] = 0
[4] = 0
*/
return 0;
}
int g[5]; // 전역 배열은, 배열 크기만 지정해 주면 자동으로 모두 0으로 초기화됨
int main(void) {
// 7개의 요소를 가진 정수 배열 선언하고, 초기화
int foo[7] = { 519, 31, 7988, 165326, 10, -24642, 134 };
// 다음과 같이 개수 지정을 생략해도, 초기화해 준 요소의 개수에 맞게 자동으로 정해집니다.
// int foo[] = { 519, 31, 7988, 165326, 10, -24642, 134 };
// 그런데 초기화하지 않고,
// int foo[];
// 이렇게 개수도 지정하지 않으면 unknown size (배열 크기를 알 수 없음) 에러가 납니다.
// 배열 출력
for (int i = 0; i < 7; i++)
printf("[%d] = %d\n", i, foo[i]);
/* 출력 결과:
[0] = 519
[1] = 31
[2] = 7988
[3] = 165326
[4] = 10
[5] = -24642
[6] = 134
*/
// 배열 요소 개수를 넘는 범위까지 출력하면
// 현재 메모리 속에 있는 임의의 쓰레기값이 출력되어 버림
for (int i = 0; i < 8; i++)
printf("[%d] = %d\n", i, foo[i]);
/* 출력 결과:
[0] = 519
[1] = 31
[2] = 7988
[3] = 165326
[4] = 10
[5] = -24642
[6] = 134
[7] = 4201876 <- 이것은 존재하지 않는 요소이며 지금 쓰레기값으로 채워져 있음
*/
// 이렇게 하면 8개 배열 요소가 모두 0으로 초기화됩니다.
int bar[8] = { 0 };
// int bar[8] = { 111, 222, 333 }; 이러면 333 뒤의 요소부터 끝까지는 모두 0으로 초기화됨
// int bar[8] = { 111, 222, 333, }; 이렇게 쉼표를 붙여서 뒤쪽의 나머지 요소 자동초기화를 명시적으로 나타낼 수도 있음
for (int i = 0; i < 8; i++)
printf("[%d] = %d\n", i, bar[i]);
/* 출력 결과:
[0] = 0
[1] = 0
[2] = 0
[3] = 0
[4] = 0
[5] = 0
[6] = 0
[7] = 0
*/
// 비주얼C++에서는 다음과 같이 해도 모두 0으로 초기화되더군요.
// int bar[8] = { };
// 전역 배열 출력: 이미 자동으로 초기화되어 있음
for (int i = 0; i < 5; i++)
printf("[%d] = %d\n", i, g[i]);
/* 출력 결과:
[0] = 0
[1] = 0
[2] = 0
[3] = 0
[4] = 0
*/
return 0;
}
▶▶ C언어] 배열 포인터를 함수의 인수(파라미터)로 전달; Array Pass to a Function
▶▶ C언어] 2차원 배열 만들기, 초기화, 출력; Two Dimensional Array
tag: cpp
C언어 | C/C++ (Visual C++)
<< Home