C

3.배열

Honyack 2023. 8. 31. 16:20

 

배열?  [다수의 데이터를 연속적으로 저장하고 사용할수있는 자료형]

 

 

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값이 있는곳 까지 값을 받아온다.

 

'C' 카테고리의 다른 글

6. malloc  (0) 2023.09.01
5.다중포인터  (0) 2023.09.01
4. 구조체  (0) 2023.08.31
2.함수  (0) 2023.08.31
1.변수  (0) 2023.08.31