티스토리 뷰

공부 이야기

[C] 배열을 알아보자

판다(panda) 2009. 9. 16. 00:01

Microsoft Visual Studio 2005 버전으로 작성되었습니다..
미리 컴파일 된 헤더를 사용했습니다..



// ArrayTest.cpp : 콘솔 응용 프로그램에 대한 진입점을 정의합니다.
//

#include "stdafx.h"

// 여러개의 변수를 한번에 선언하는 방법 : 배열(Array)
// int n1, n2, n3, n4, n5, n6, n7, n8, n9, n10;
// 여러개의 변수를 선언해줄려면 변수선언을 일일이 해주어야하는 번거로움 존재
// int n[10];
// 배열변수의 선언은 여러개의 변수를 한번에 선언해줄 수 있다.
// 배열변수는 첨자가 1부터 시작하지 않고 0부터 시작한다는 것에 주의한다.
// 예를 들어서,
// int n[3]; 은
// int n[0], n[1], n[2]; 라 생각한다. (물론 이건 안되는 것이지만)..
// 배열의 첫번째 첨자는 0, 마지막 첨자는 배열갯수 -1이다.

// 문제:
// 10개짜리 배열변수를 만들고, 1부터 10까지의 값을 쓴 다음, 배열 변수의 값 출력

int _tmain(int argc, _TCHAR* argv[])
{

 int n[10]; // 10개의 배열변수, 대표이름은 n이고, 변수타입은 int로 선언.

 // 변수의 값 대입. 대입연산자

 n[0] = 1;
 n[1] = 2;
 n[2] = 3;
 n[3] = 4;
 n[4] = 5;
 n[5] = 6;
 n[6] = 7;
 n[7] = 8;
 n[8] = 9;
 n[9] = 10;

 // 배열값 출력

 printf("%d\n", n[0]);
 printf("%d\n", n[1]);
 printf("%d\n", n[2]);
 printf("%d\n", n[3]);
 printf("%d\n", n[4]);
 printf("%d\n", n[5]);
 printf("%d\n", n[6]);
 printf("%d\n", n[7]);
 printf("%d\n", n[8]);
 printf("%d\n", n[9]);

 return 0;

}

실행결과:


// for 루프, while 루프
// 반복작업이 있는 경우에 사용한다.
// for 루프와 while 루프는 용법만 틀리고, 표현하는게 동일하다.

// for(A; B; C;) D;
// A; while(B) {D; C;}

// while(A) B;
// for( ; A; ;) B;

int _tmain(int argc, _TCHAR* argv[])
{

 int n[10];

 // 변수값 대입
 // A파트에 int i=0 (배열의 처음 첨자)
 // B파트에 i<10 (배열크기보다 작다. *같다가 포함되지 않음에 유의)
 // C파트에 i++ (배열첨자를 하나 증가)

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

  n[i] = i+1;

 
 // 배열값 출력

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

  printf("%d\n", n[i]);

 return 0;

}
실행결과:



// 배열변수를 함수로 전달
// 함수선언할 때, 파라미터에 []을 배열변수 뒤에 붙인다.
// 예를 들어서,
// int n[10]; 으로 선언된 배열 변수 n을 전달 하고자 할 때,
// 함수 선언 void foo(int n[]); 으로 선언하면 된다.
// 다차원 배열의 경우에는 함수 파라미터에 첫번째 첨자칸을 제외한 모든 첨자칸에
// 배열의 크기를 적어주어야 하고, 이 값은 전달하는 배열변수에서 선언한 것과
// 같은 값이어야 한다.
// int n[10][20];
// void foo(int n[][20]);

// 문제:
// 배열을 출력하는 부분을 함수로 작성.

 

void Display(int n[])
{

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

  printf("%d\n", n[i]);

}

int _tmain(int argc, _TCHAR* argv[])
{

 int n[10];

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

  n[i] = i+1;

 // 배열값 출력

 Display(n);

 return 0;

}

// 또는
void Display(int n[]);

int _tmain(int argc, _TCHAR* argv[])
{

 int n[10];

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

  n[i] = i+1;


 Display(n);

 return 0;

}

void Display(int n[])
{

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

  printf("%d\n", n[i]);

}

실행결과 :



작성하고 옮기고는 쉬운데..
글자색 변경하려니까.. 엄청 노가다가 되어버리는군요..
나중에 다른걸 올릴때는.. 그냥 올리겠습니다;..