배열? [다수의 데이터를 연속적으로 저장하고 사용할수있는 자료형]
01.배열 선언
선언방식
[자료형] [이름][크기] ;
int name[10];
이렇게 선언하면 int 타입의 변수가 10개로 이루어진 하나의 배열을 생성하고,
각 요소는 인덱스를통해 접근할수있다.
int main()
{
char a[10];
for (int i = 0; i < 10; i++)
{
a[i] = 0;
}
char b[] = {0,0,0,0,0,0,0,0,0,0,0};
char c[10] = {};
//a, b, c배열 모두 값은 같음
}
모두 다른 방법으로 0의 값을 배열에 넣었다.
int main()
{
int a[3][2] = { {0,1},{2,3},{4,5} };
for (int y = 0; y < 3; y++)
{
for (int x = 0; x < 2; x++)
{
printf("%d\t", a[y][x]);
}
printf("\n");
}
}
이중 배열도 마찬가지로 열의 크기를 인덱스로 지정해주고
이중 for문으로 출력하거나 값을 변경하며 사용할수있다.
char 형은 문자열 형태로도 초기화 할수있다.
char 문자열
char name[10];
scanf_s("%s", name, 10); //1
printf("%s\n", name);
scanf_s("%s", &name, 10); //2
printf("%s\n", name);
1과 2의 차이와 결과는 어떻게 다를까?
1번과 2번 둘다 같은 주소 이기 때문에 오류없이
값을 넣어줄수있다.
name자체가 주소 이기 때문에 &name과 차이가 없다.
물론 문자열로 값을 받고 있기때문에 가능한것이다.
char name[10];
scanf_s("%c", &name[0]);
printf("%s", name);
이번에는 name[0]배열에만 값을 넣고 출력하려 하였지만
입력한 값 이외의 값이 뒤에 붙어서 출력되었다.
그이유는 %c와 %s의 값을 받는 방식이 다르기 때문인데
%c 의 경우 해당 인덱스에 값만 저장하고
%s 의 경우 문자열 마지막에 0을 붙여주어
문자열을 받을때에도 0값이 있는곳 까지 값을 받아온다.