배열과 포인터 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.
7강 C언어 배열과 포인터 심화 (0) | 2020.01.28 |
---|---|
6강 C언어 포인터의 개념과 사용 (0) | 2020.01.28 |
4강 C언어 반복문, for문, while문, do~while문 (0) | 2020.01.21 |
3강 C언어 조건문, C언어 if~else문, C언어 switch문 (0) | 2020.01.17 |
2강 C언어 printf , C언어 scanf (0) | 2020.01.15 |