배열의 선언은 다음과 같이 할 수 있다.
자료형 배열명[배열의 크기] = {초기화 값}; //초기화 값은 없을 수도 있다.
int arr[10] = {1,2,3,4,5,6,7,8,9,10};
int zeroArray[10] = {0,} //만약 배열의 전체 요소의 값이 0일 때. 배열의 값들이 전부 0으로 초기화가 이루어진다.[0,0,0,0,0,0,0,0,0,0]
//
// main.c
// tutorial-sample
//
// Created by 임재현 on 2021/04/23.
//
#include <stdio.h>
#include <limits.h> //각 자료형의 최대값이나 최소값을 알기 위한 라이브러리 헤더
int main(int argc, const char * argv[]) {
int a[10] = {1,2,3,4,5,6,7,8,9,10};
printf("---a---\n");
for(int i = 0; i < 10; i++){
printf("%d ",a[i]);
}
printf("\n");
printf("---b--- \n");
int b[10] = {0,};
for(int i = 0; i < 10; i++){
printf("%d ", b[i]);
}
printf("\n");
printf("---배열의 원소 중에서 최대값 찾기--- \n");
int c[10] = {5,11, 55,3,1,6,8,9,1,2};
int maxValue = INT_MIN; //INT_MIN은 INT형으로 표현할 수 있는 수 중에서 가장 작은수. 최대값을 구하기 위해 자주 사용된다.
for(int i = 0; i < 10; i++){
if(maxValue < c[i]) maxValue = c[i];
}
printf("%d\n", maxValue);
return 0;
}
int main(int argc, const char * argv[]) {
char a[20];
scanf("%s", &a);
printf("%s\n",a);
printf("--------------\n");
char b[20] = "Hello World";
b[5] = '~';
printf("%s \n",b);
printf("문자열에 포함된 \"l\"의 개수 출력하기\n");
char c[] = "Hello World"; //특정한 문자열을 사전에 정의해서 초기화 하는 경우에는 배열의 크기를 명시해주지 않아도, 알아서 배열의 크기가 정해진다. 숫자(int)등도 마찬가지.
int count = 0;
for(int i = 0; i < 10; i++){
if(c[i] == 'l'){
printf("걸림. i = %d",i);
count++;
}
}
printf("\"ㅣ\"의 개수는 %d개 입니다.",count);
return 0;
}
++실험으로 정해진 배열 이상의 크기를 꺼내려고 했을 때 어떻게 되나 실험해봤다.
int d[] = {1,2,3,4,5};
for(int i = 0; i < 20; i++){
printf("%d번째 글자 : %d \n", i,d[i]);
}
d는 5개가 정의되어 있지만, 20까지 꺼내는 반복문을 작성해보았다. 그리고 결과는 다음과 같다.
0번째 글자 : 1
1번째 글자 : 2
2번째 글자 : 3
3번째 글자 : 4
4번째 글자 : 5
5번째 글자 : 1819043144
6번째 글자 : 1867980911
7번째 글자 : 6581362
8번째 글자 : 1819043144
9번째 글자 : 1868004975
10번째 글자 : 6581362
11번째 글자 : 0
12번째 글자 : 0
13번째 글자 : 0
14번째 글자 : 0
15번째 글자 : 0
16번째 글자 : 3420721
17번째 글자 : 0
18번째 글자 : 0
19번째 글자 : 0
제대로 정의한 1~5까지는 제대로 된 값이 나왔지만 그 다음부터는 랜덤한 값이나 0이 나왔다. 그러니깐 배열의 범위를 초과한 값에 대해서는 랜덤값이나 0이 나왔다는 소리다. 아직 포인터에 대해 배우지 않았지만, 지금 추측을 해보자면 메모리를 참조하는 부분이 넘어가서(?)그런 것 같다. 아직 확실하지 않으므로 포인터에 대해서 공부해봐야겠다.