2009. 4. 15. 11:29

초기화 - char a[]와 char *p의 초기화 차이점

int main()
{
    char a[] = "string literal";
    a[2] = 66;
   
    char *p = "string literal";
    //p[2] = 66; // 에러 발생
   
    printf("%s\n",a);
    printf("%s",p);
    system("pause");
    return 0;  
}  

char a[] = "string literal";
이 경우는 배열의 초기값으로 쓰이는 것을 의미하며 배열의 각 요소들인 문자들에 대입되는 초기값을 나타낸다.
이 경우가 아니면 문자열은 이름이 없는 정적(static)인 배열에 저장되고 읽기 전송의 속성을 가진다.
char *p = "string literal"; 에서는 읽기 전용이므로 포인터 p를 가지고 문자열을 수정할 수 없다.