컴퓨터 엑셀 워드 포토숍 구글어스 WINDOWS JAVASCRIPT JAVA C++

 
Previous Post 텍스트파일 인코딩/언어 알아내기, 자동 판단; Encoding Auto-Detect Eme...일본어 고전 소설 원문 무료로 공개; 아오조라 문고 Aozora Bunko리눅스(Linux) 유닉스(Unix) 명령어 목록: Command ListJava/자바] Date 클래스; 현재 날짜/시간/요일, 간단히 출력 예제Java/자바] 세계 시간; 각국 현재 시각 얻기; World Time, TimeZone ...자바,Java] 유닉스타임을 날짜/시간 문자열로 변환; Unix Time to Date S...중문] 중국어 번체 텍스트 파일 예제; Big5 Chinese Text Example중문] 중국어 간체 텍스트 파일 예제; GB2312 Chinese Text Example윈도우용 펄 다운로드/설치법; MS Windows용 Perl Downloadcp949, MS949, euc-kr, ks_c_5601-1987, 한글 완성형 인코딩 차...

C언어] 1차원 배열 선언, 배열 초기화 예제: One-Dimensional Array Initialize

Sunday, November 05, 2006

1차원 배열을 선언할 때에는

자료형 배열명[요소의 개수]

형식으로 지정합니다.

배열의 첫번째 요소의 번호는 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;
}




▶▶ C언어] 배열 포인터를 함수의 인수(파라미터)로 전달; Array Pass to a Function

▶▶ C언어] 2차원 배열 만들기, 초기화, 출력; Two Dimensional Array

☞ C/C++

0 Comments:

Post a Comment

<< Home RSS 2.0 feed

구글 Google 에서 제공하는 무료 블로그 서비스인 블로거 Blogger 의 인터넷 주소는 www.blogger.com 입니다. Blogger 에 블로그를 만들면, blogspot.com 이라는 주소에 블로그가 생성됩니다.
블로그를 직접 방문하지 않고도 최신 게시물을 구독하려면 RSS 2.0 feed 주소를 리더기에 등록하시면 됩니다.
Categories
Previous Posts
Monthly Archives
Top