프로그래밍 언어/C

C언어 10강 배열(array)/문자열(char 활용)

happy_life 2020. 10. 31. 13:43

●배열(array)

 

 

1)정의같은 종류의 데이터 타입을 선언하기 위해 구성된 데이터의 집합.

 

*일반변수 선언과의 차이: 일반변수의 경우에는 따로 분리된 변수 이름을 사용하지만,

                                  배열은 변수를 한 줄로 묶어서 전체 이름을 지정하고, 인덱스로 값을 구분하여사용.(0부터시작)

[추가내용: 배열첨자는 왜 0부터?? : 배열 첫 원소로부터 몇 개 뒤의 원소인가를 나타내기 때문]

 

일반변수: int a = 5;   

5

배열: int arr[3] = {1,2,3};

1 2 3

arr[0] arr[1] arr[2]

 

배열요소: 배열을 구성하는 요소. 위에서 데이터(1,2,3)이 배열의 요소이다.

 

 

 

                          배열 크기

2)선언예시: int arr[3] = {1,2,3};  or  int arr[ ] = {1,2,3};     << 빈칸 해놓으면 자동으로 된다. 다차원 배열에서는 안됨.

            ↗        ↖    

  배열 데이터 타입  배열 이름

 

 

 

 

3)배열과 반복문

 

배열과 반복문의 시너지효과가 큼

-코드예제

#include <stdio.h>

int main() {
	int sum = 0; 
	int score[5] = { 1,2,3,4,5 };
	int cnt;
    
	for (cnt = 0; cnt <= 4; cnt++) {
		sum = sum + score[cnt];
	}
    
	printf("sum = %d", sum);


	return 0;
}

sum = 0

1)sum = 0 + score[0] = 1

2)sum = 1 + score[1] = 3

3)sum = 3 + score[2] = 6

4)sum = 6 + score[3] = 10

5)sum = 10 + score[4] = 15

 

4)주의사항

 

●배열의 데이터 인덱스값은 0부터 시작한다.

 

●배열에 서로 다른 자료형을 저장할 수 없다.

 

●배열 선언시 원소의수는 상수여야한다.

   ex) int n = 100; int cost[n]; (X)

 

●배열을 선언할 때만 {}로 초기화할 수 있다.

 ex) int n[5]; n = {1,3,5,7,9}; (X) 

 ex) int n[5] = {1,2,3,4,5}; (O)

 

5)문자열과 배열

 

-C언어에는 문자열형(string)이 따로없어 배열을이용해 문자열을 표현해야한다.

-문자열은 ' '(문자로 인식) 이 아닌 " "(문자열로 인식) 를 꼭 사용해야한다.

-반드시 null(\0) 문자가 들어갈 공간을 확보해야한다

-scanf 함수 선언시 &를 붙이지 않는다.(배열 그자체가 메모리 주소 역할을 하기 때문)

-이미 할당된 배열에 문자열을 할당할 수 없다. 

  char ch[8];

  ch ="apple";  << 이런식으로 X 

 

예시

char ch[8] = "apple";

a p p l e \0  

코드예시

#include <stdio.h>
int main() {
	char apple1[6] = { 'a','p','p' ,'l','e' ,'\0'};
	char apple2[6] = "apple";
	char apple3[5] = "apple";

	printf("%s\n", apple1); // apple 정상출력
	printf("%s\n", apple2); // apple 정상출력
	printf("%s\n", apple3);  //출력 오류



	return 0;
}