ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [C 언어 기초 정리 04] Array, 문자열
    개발 이야기/C 2023. 9. 23. 00:23

    배열과 문자열은 메모리와 함께 연관하여 알아두면 좋고, 이후에 나오는 포인터 개념과도 연관된다.

    배열의 경우에도 다양한 프로그래밍 언어에서 차이는 있지만 대다수 공통된 특징을 가지기에(0부터 시작한다던가, 기타 문법이나) 여기서도 간단히 문법적인 부분만 짚고 넘어가려고 한다. 

    1차원 배열 

    C언어에서는 배열을 선언만 하고 초기화하지 않으면, 각 배열 요소에 아무런 의미를 가지지 않는 쓰레기값이 저장되어 있게 되기에 사용에 유의해야한다, 

    int array[3]
    //배열의 크기가 3
    
    array[0]=1
    array[1]=2
    array[2]=3
    
    //선언과 동시에 초기화 하기
    int array[3] = {1,2,3}
    
    //sizeof->배열의 길이를 반환하는 것이 아닌 메모리의 크기를 반환
    //len을 알려면 하나의 원소가 차지하는 메모리의 크기로 나누어야함 
    int len_arr = sizeof(array)/sizeof(array[0])

    2차원 배열(다차원 배열)

    //타입 배열이름[행의길이][열의길이];
    int arr01[6] = {10, 20, 30, 40, 50, 60};
    
    int arr02[2][3] = {10, 20, 30, 40, 50, 60};

    2차원 배열의 모양..?

    우리는 2차원 배열을 만들 때 위와 같은 형태를 기대하지만, 사실 메모리는 선형공간이기 때문에 실제로는 아래 그림과 같이 저장된다. 

    실제 2차원 배열의 모습

    즉, arr[0]라는 배열 안에 다른 배열 형태로 저장되는 것이다. 이는 이후에 numpy에서 다차원배열에서도 똑같이 적용되는 개념이다(https://pybasall.tistory.com/129 )

    2차원 배열에서는 초기화되지 않은 일부의 값은 0으로 자동저장된다. 

     

    문자열(String)

    문자열은 문자열 상수라고 표현된다. C언어에서 문자열(string)은 메모리에 저장된 일련의 연속된 문자(character)들의 집합을 의미하기에 따라서 문자형 배열을 선언하면 이 배열이 곧 문자열 변수가 됩니다.

    char str01[] = "This is a string.";    // 크기를 지정하지 않은 문자열 변수 선언
    
    char str02[7] = "string";              // 크기를 지정한 문자열 변수 선언
    
    printf("이것은 문자열 상수입니다.\n"); // 문자열 상수
    printf("문자열 str01에 저장되어 있는 문자열은 \"%s\"입니다.\n", str01);
    printf("문자열 str02에 저장되어 있는 문자열은 \"%s\"입니다.\n", str02);

    - 문자열 관련 함수

    1. strlen() 함수: 길이반환

    2. strcat(), strncat() 함수: 문자열 2개이상 합하기, strncat은 인자로 최대허용치지정

    3. strcpy(), strncpy() 함수: 문자열을 복사

    4. strcmp(), strncmp() 함수: 내용비교

    5. atoi(), atol(), atoll(), atof() 함수: int, long, longlong, double로 변경

    6. toupper(), tolower() 함수: 대소변경

Designed by Tistory.