ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 열혈강의 C 5일차
    backup/c,c++ 2009. 12. 16. 21:19

    C에서 가장 어렵다는 배열과 포인터, 이제 시작이다.

    1. 문자는 비교연산시 아스키코드값으로 비교연산을 수행한다.
       char string[10] = {0,}
       int len = 0;
       while(string[len] != 0)    //stirng안의 문자가 '\0'인지 비교
            len++;                     //null문자 즉 문자열의 끝인지확인 하는 것으로 문자열 길이를 구한다.
       
       while문 반복조건을 string[len] != '\0' 또는 = NULL로도 할 수도 있지만 어차피 널문자는 아스키코드값이
       0이므로 비교시 0으로 변환한다. 따라서 그냥 0으로 해도 결과는 같다.

    2. 포인터의 타입은 데이터를 참조하는 방법을 알려주는 역할을 한다.
        즉, 시작주소부터 몇 byte를 읽은 것인가를 알려준다.(char는 1byte, int는 4byte...)

    3. 널 포인터
       int* ptr = 0;     //널포인터의 선언이다. 즉, 아무것도 가리키지 않는다.
       int* ptr = NULL; 도 같은 뜻이다.

    4. 같은 문자열상수는 메모리에 한 번만 할당한다(컴파일러에 따라 아닌것도 있음)
       문자열 상수라 함은 printf() 안의 "문자열" 이나 char* ptr = "문자열" 같은 상수인 문자열을 말한다.
       문자열 상수는 변경되지 않으므로 여러번 같은 문자열을 할당할 필요가 없다.
       이러한 것은 컴파일러가 자동으로 최적화를 시켜주는 과정에서 생기고 컴파일러에 따라 최적화를 하지않기도 한다.
       대표적으로 VC++은 최적화를 하고 Turbo C/C++같은 경우는 최적화를 하지 않고 따라서 문자열 상수를 접근해서
       변경시키는 것도 허용한다.

Designed by Tistory.