2009. 4. 15. 11:29
초기화 - char a[]와 char *p의 초기화 차이점
2009. 4. 15. 11:29 in 프로그래밍 세계/Language Part 1 C/C++
![](https://tistory1.daumcdn.net/tistory/264881/skin/images/bg_clear.gif)
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를 가지고 문자열을 수정할 수 없다.
{
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를 가지고 문자열을 수정할 수 없다.