본문 바로가기

2014 C/3월

2014.03.25

배열


#include <stdio.h>

int main()
{
  int arr1[5]={1,2,3,4,5};
  int arr2[ ]={1,2,3,4,5,6,7};
  //배열의 크기를 지정하지 않고 초기화를 하면 초기화된 크기로 지정된다.
  int arr3[5]={1,2};
  int ar1Len;
  int ar2Len;
  int ar3Len;
  int iCnt;


  printf("배열 arr1의 크기 : %d \n"sizeof(arr1));
  //4byte씩이기 때문에 배열의 크기 5*4를 하면 20이 나온다.
  printf("배열 arr2의 크기 : %d \n"sizeof(arr2));
  printf("배열 arr3의 크기 : %d \n"sizeof(arr3));

  ar1Len = sizeof(arr1) / sizeof(int);
  ar2Len = sizeof(arr2) / sizeof(int);
  ar3Len = sizeof(arr3) / sizeof(int);

  //배열의 크기를 모를때가 있다. 이 때 배열의 크기를 알리기 위함
  //5x4 로 14번째줄이 20이 나오니까 18번째에선 20 / 5(배열의 길이)를 해주어서
  //배열의 크기를 알리고 있는것

  for(iCnt=0;iCnt < ar1Len;iCnt++)
  {
      printf("%d",arr1[iCnt]);
  }
    printf("\n");

  for(iCnt=0;iCnt < ar2Len;iCnt++)
  {
      printf("%d",arr2[iCnt]);
  }
    printf("\n");
  
  for(iCnt=0;iCnt < ar3Len;iCnt++)
  {
      printf("%d",arr3[iCnt]);

  }
    printf("\n");
  return 0;

} 

배열 arr1의 크기 : 20

배열 arr2의 크기 : 28

배열 arr3의 크기 : 20

12345

1234567

12000



#include <stdio.h>

int main()
{
  char str[]="Good morning!";
  //배열의 총 크기 문자당 1byte로 총 13byte 배열의 크기는 12( 0~12)
  printf("배열 str의 크기 : %d \n",sizeof(str));
  //배열의 크기가 12 인줄 알았는데 14로 출력되었다.
  //따옴표를 초기화하면 null이 초기화 된다. 그래서 총 길이는 14byte가 나온다.
  printf("널 문자 문자형 출력 : %c \n", str[13]);
  printf("널 문자 정수형 출력 : %d \n", str[13]);

  str[12]='?';
  //배열의[12]번째에 위치한 '!'를 '?'로 바꾼다. 배열의 일부를 변경하는 것이 가능하다.
  printf("문자열 출력: %s \n", str);
  return 0;

} 


배열 str의 크기 : 14

널 문자 문자형 출력 : 

널 문자 정수형 출력 : 0
문자열 출력 : Good morning?

 1

2 

3 

4 

5 

6 

7 

8 

9 

10 

11 

12 

13 

14 

 

 ?

 Null






*****

#include <stdio.h>

int main()
{
  char str[]="Good morning!";
  printf("배열 str의 크기 : %d \n",sizeof(str));
  printf("널 문자 문자형 출력 : %c \n", str[13]);
  printf("널 문자 문자형 출력 : %d \n", str[13]);

  str[12]='?';
  printf("문자열 출력: %s \n", str);
  str[4]=0;
  printf("문자열 출력: %s \n", str);
  return 0;

} 

배열 str의 크기 : 14

널 문자 문자형 출력 : 

널 문자 정수형 출력 : 0
문자열 출력 : Good morning?
문자열 출력 : Good
-> %s 출력은 문자열 출력이다. 0을 만나면 출력이 중지 된다.

-> 그래서 13번째줄의 Null을만나 출력을 중지시킨 것, 분홍줄을 친 영역은 Good뒤에 0을 넣었다.

-> 그러자 Good까지만 출력되고 정지됨. ( '0' 처럼 따옴표를 친 0은 아스키코드영역의 0이되어 Null값이 아니기에 출력됨. )


-Error!

-----







-str!!












'2014 C > 3월' 카테고리의 다른 글

2014.03.26  (0) 2014.03.26
2014.03.25  (0) 2014.03.25
2014.03.24  (0) 2014.03.24
2014.03.24  (0) 2014.03.24
2014.03.21  (0) 2014.03.21