C 15Day (20160127)
by jennysgap배열
정의
- 둘 이상의 변수를 모아 놓은 것
- 동일한 타입을 가지는 변수들의 집합
활용
- 다수의 변수 선언을 용이하게 하기 위함
- 같은 형의 변수들을 연속적으로 나란히 선언할 수 있다.
- 문자열을 사용할 수 있다.
인덱스를 이용해서 순차적으로 접근이 가능하다는 장점이 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> int main(void) { //자료형 배열이름[배열길이]; int arr[5]; arr[0]=10; arr[1]=20; arr[2]=30; arr[3]=40; arr[4]=50; printf("%d ", arr[0]); printf("%d ", arr[1]); printf("%d ", arr[2]); printf("%d ", arr[3]); printf("%d ", arr[4]); return 0; } | cs |
반복문 사용할 수 있음
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | #include <stdio.h> int main(void) { int arr[5]; int i; for (i=0; i<5; i++) arr[i]=(i+1)*10; printf("%d ", arr[0]); printf("%d ", arr[1]); printf("%d ", arr[2]); printf("%d ", arr[3]); printf("%d ", arr[4]); return 0; } | cs |
printf 또한 반복문으로 사용 가능
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(void) { int arr[5]; int i; for (i=0; i<5; i++) { arr[i]=(i+1)*10; printf("%d ", arr[i]); } return 0; } | cs |
선언과 동시에 초기화 가능
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main(void) { int arr[5]={10, 20, 30, 40, 50}; int i; for (i=0; i<5; i++) { printf("%d ", arr[i]); } return 0; } | cs |
입력 안 했을 경우 0으로 초기화 됨
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main(void) { int arr[5]={10, 20}; int i; for (i=0; i<5; i++) { printf("%d ", arr[i]); } return 0; } | cs |
길이를 명시하지 않았어도 알아서 길이를 캐치해줌
1 2 3 4 5 6 7 8 9 10 11 12 13 | #include <stdio.h> int main(void) { int arr[]={10, 20}; int i; for (i=0; i<2; i++) { printf("%d ", arr[i]); } return 0; } | cs |
배열의 이해
- 장점에 대해서 잘 파악하자!
- 순서대로 입력하기 때문에 인덱스를 가지고 순차적으로 접근이 용이
- 여기까지 하면 배열의 기본은 끝
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | #include <stdio.h> int main(void) { int arr1[5] = {1, 2, 3, 4, 5}; int arr2[] = {1, 2, 3, 4, 5, 6, 7}; int arr3[5] = {1, 2}; int len1, len2, len3, i; printf("arr1의 크기 : %d \n", sizeof(arr1)); //sizeof 연산의 결과로 배열의 크기를 반환 printf("arr2의 크기 : %d \n", sizeof(arr2)); printf("arr3의 크기 : %d \n", sizeof(arr3)); len1 = sizeof(arr1) / sizeof(int); //배열의 길이를 계산 len2 = sizeof(arr2) / sizeof(int); len3 = sizeof(arr3) / sizeof(int); for(i=0; i<len1; i++) //반복문을 이용해 순차적으로 접근이 가능 printf("%d", arr1[i]); printf("\n"); for(i=0; i<len2; i++) printf("%d", arr2[i]); printf("\n"); for(i=0; i<len3; i++) printf("%d", arr3[i]); printf("\n"); } | cs |
sizeof는 크기를 알려주는 연산자
문제
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | #include <stdio.h> int main(void) { int arr[5]; int max, min, sum, i; printf("입력 : "); for(i=0; i<5; i++) { scanf("%d", &arr[i]); } printf("\n"); //코드를 작성하시오 printf("최대값 : %d \n", max); printf("최소값 : %d \n", min); printf("총 합 : %d \n", sum); return 0; } | cs |
최대값 : 50
최소값 : 10
총합 : 150
배열 (널 문자의 이해)
Char str[14]="Good morning!";
널(\0) 문자
- 문자열의 끝에 자동으로 삽입되는 문자
- 문자열의 끝을 알려줌
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main(void) { char str[]="I hate C!"; printf("%d\n", sizeof(str)); //배열 길이=10 printf("%s\n", str); //문자 출력 printf("%c", str[9]); //\0 출력 해보세욥(형태가 없음) return 0; } | cs |
형태가 없는거 보니 널문자는 스페이스 아닌가요? (비교해 보죠)
서로 다른 문자에요~ 오해 금지!
1 2 3 4 5 6 7 8 9 10 11 | #include <stdio.h> int main(void) { char nu='\0'; char sp=' '; printf("%c %c\n", nu, sp); //둘 다 안나옴 printf("%d %d\n", nu, sp); //아스키코드값이 다름 return 0; } | cs |
배열(널 문자의 이해) 예제
배열의 각 요소는 변수 성향임 그래서 임의로 변경해서 저장 가능!
나중에 포인터 변수 사용하면서 헷갈릴 수 있으니 잘 기억해 둘 것!!
*주의* 문자열은 싱글커텐션(' ')이 아니라 더블커텐션(" ")
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | #include <stdio.h> int main(void) { char str[] ="Good morning!"; //배열의 길이가 14 ?? printf("배열의 크기 : %d \n", sizeof(str)); printf("널 문자 문자형 출력 : %c \n", str[13]); printf("널 문자 정수형 출력 : %d \n", str[13]); str[12] = '?'; // str에 저장된 문자열 데이터는 변경 가능 printf("%s \n", str); return 0; } | cs |

블로그의 정보
jennysgap
jennysgap