Young & Rich

 

배열과 포인터 1편입니다.

먼저, 배열에 대해서 설명하겠습니다.

 

[ 배열 ]

배열은 사용자가 여러 개의 변수의 생성을 필요로 할 때 사용합니다.

예를 들면, 30명의 반 학생들의 성적을 관리하는 프로그램을 만든다고 가정해봅시다.

 

int math_student1, math_student2, math_student3..., math_student30;

 

이렇게 변수를 일일히 만들 수 없겠죠?

 

문법 : 자료형 변수명[];

 

int math_student[30];  이렇게 사용할 수 있습니다.

자료형 변수명[];

math_student[0] ~ math_student[29] : 0~29 총 30개의 변수처럼 사용할 수 있습니다.

Index 는 항상 0부터 시작합니다!!

 

[] 한 개가 붙어 있으면 배열이 1차원적으로 쭉 나열된다고 해서 1차원 배열이라고 부릅니다.

[][] 이렇게 되어있으면 그럼 2차원 배열, N개면 N차원 배열이라고 할 수 있겠습니다.

 

가장 간단한 배열을 사용한 예제를 보여드리겠습니다.

#include<stdio.h>

void main()
{
	int num[3] = {0,};		// 0으로 모든 배열의 값 초기화
	int sum = 0;

	num[0] = 10;
	num[1] = 20;
	num[2] = 30;

	sum = num[0] + num[1] + num[2];

	printf("sum : %d\n", sum);
}

위와 같은 방법으로 배열에 접근 및 사용할 수 있습니다.

 

보통 배열은 for문 과 같이 연동해서도 많이 씁니다. 아래의 예제를 같이 보시죠.

#include<stdio.h>

void main()
{
	int num[3] = {10,20,30};		// 차례대로 10,20,30값이 대입됩니다.
	int sum = 0, i;

	for ( i = 0; i < 3; i++)
		sum = sum + num[i];

	printf("sum : %d\n", sum);
}

같은 동작을 하는 프로그램이지만 for문으로 훨씬 더 간결하게 구현할 수 있습니다.

 

배열하면서 나오는게 문자열인데요. "Hello World" 이렇고 문자열이죠.

문자를 저장하는 자료형은 char 입니다. 근데 누가 'A', 'H', .. 한 개만 저장해서 쓰겠습니까? 문자열도 저장을 하죠.

그래서 char name[16]; 문자열이 등장합니다.

 

사용자한테 입력받은 문자를 다시 그대로 출력하는 프로그램 예제를 보시겠습니다.

#include<stdio.h>

void main()
{
	char name[17] = {0,};		// 0(NULL) 로 초기화
	
	printf("이름을 입력해주세요 : ");
	scanf("%s", name);			// name => &name[0]

	printf("%s 이란 이름이 굉장히 잘 어울리시네요!!\n", name);
}

프로그램 실행결과
프로그램 실행결과

영어 기준 16개의 문자까지 입력받을 수 있고, 한글 기준 2*8글자 까지 입력받을 수 있습니다.

 

0으로 초기화 해 준 이유는, 문자열을 출력할 때, 0(NULL) 을 만날 때까지 출력됩니다. 그래서 문자열의 항상 맨 뒤에는 0(NULL) 값이 있어야 합니다.

 

scanf("%s", name); 

name 이라는 배열을 선언하고 name 은 무엇을 의미할까요?

바로, 배열의 첫 번째 주소값을 의미합니다.
scanf 에는 항상 주소값이 들어가야 한다는 거 잊지 않으셨죠?^^

 

문자열의 첫 번째 [0] Index 부터 입력받은 값이 들어가야 하기 때문에 name or &name[0] 이라고 사용하셔야 정상적인 동작을 합니다.

 

배열은 굉장히 많은 곳에서 사용되기 때문에 기본 개념을 꼭 숙지해주셔야 됩니다.

 

배열 요약
배열 요약

 

다음편에서 포인터에 대해서 포스팅 하도록 하겠습니다.

 

제가 자꾸 주소값을 강조하는데, 주소값이 포인터와도 연관되어 있어서 강조드리는 거니, 기억하고 계시면 좋을 것 같습니다.^^

 

그럼 20000.

이 글을 공유합시다

facebook twitter googleplus kakaoTalk kakaostory naver band