4. 배열에 대한 궁금증.

참고자료 (http://cafe.naver.com/cafec/288156)


-int형 배열연습


1
2
3
4
5
6
7
8
9
10
11
12
13
#include <stdio.h>
 
int main()
{
    int i[3];  // 선언과 동시에 초기화 하려면 int i[3] = {1,2,3}; 도 가능하다.
    i[0]=1;
    i[1]=2;
    i[2]=3;
    printf("%d\n",i[0]);
    printf("%d\n",i[1]);
    printf("%d\n",i[2]);
    for(;;);    
}

각각의 배열 자리값 i[0], i[1], i[2]에 초기화를 안해주면 쓰레기값..

3개중 하나라도 0이든 뭐든 초기화 해주면 나머지는 선언 안해도 알아서 0으로 초기화됨.


-변수형 배열

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
30
31
32
33
34
#include <stdio.h>
 
int main()
{
    int i[3];
    int j=1;
    i[0]=1;
    i[j]=2;
    i[j+1]=3;
    printf("%d\n",i[0]);
    printf("%d\n",i[j]);
    printf("%d\n",i[2]);
    for(;;);    
}
 
 
#include <stdio.h>
 
int main()
{
    int score[5];
    int i;
    for(i=0;i<5;i=i+1)
    {
        printf("%d번 학생 점수 입력 : ",i+1);
        scanf("%d", &score[i]);
    }
    for(i=0;i<5;i=i+1){
        printf("%d번 학생 %d점\n",i+1,score[i]);
    }
    for(;;);
}
 
 

이건 좀 어려웠다.

=========================================================================================================


그런데 배열 코드를 연습하다 보니 문제가 생겼다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
 
#include <stdio.h>
 
int main()
{
    int aaa[3][5]={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3}};  // aaa[0][0]={1}
    int i=0;
    int j=0;
    
    for(i;i<4;i=i+1)
    {
        for(j;j<5;j=j+1)
        {
        printf("%d", aaa[i][j]);
        }
        printf("\n");
    }
 
    for(;;);
}
 



위의 코드를 보면 처음부터 변수를 0으로 초기화 시켜 두었다. 이런 경우 내가 원하는


11111

22222

33333 

이런 결과물이 나오지 않는다;; 왜이럴까


반대로

아래 코드와 같이 for문 안에서 =0 으로 초기화 시키면 결과가 잘 나온다.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#include <stdio.h>
 
int main()
{
    int aaa[3][5]={{1,1,1,1,1},{2,2,2,2,2},{3,3,3,3,3}};  // aaa[0][0]={1}
    int i;
    int j;
    
    for(i=0;i<3;i=i+1)
    {
        for(j=0;j<5;j=j+1)
        {
        printf("%d", aaa[i][j]);
        }
        printf("\n");
    }
 
    for(;;);
}


왜 이런 문제가 생기는 것인가..?


설정

트랙백

댓글