2011-01-27 6 views

답변

7

첫 번째 것은 초기화입니다. 그것은 "스택에 7 char의 배열을 선언하고 첫 번째 3 개의 요소를 'a', 'b', 'c' 및 나머지 요소를 '\0'"으로 채우는 것을 의미합니다.

둘째로, 배열을 초기화하지 않을 것입니다. 그런 다음 배열에 할당하려고합니다. 이는 유효하지 않습니다. (s 이제 포인터 아닌 배열입니다)

const char *s; 
s = "abc"; 

그러나 의미는 약간 다른 것 : 이런 식으로 뭔가는 "일"것입니다. 대부분의 경우 차이는 거의 없습니다. 그러나 중요한 몇 가지주의 사항이 있습니다. 예를 들어 내용을 수정할 수 없습니다. 또한 sizeof(s)은 포인터의 크기를 주지만 원래 코드에서는 7 (배열의 크기)을 지정했을 것입니다.

권장되는 읽기 값은 http://c-faq.com/charstring/index.html입니다.

+2

첫 번째 경우에도 나머지 세 항목은 '\ 0'으로 초기화됩니다. 이것은 매우 유용 할 수 있습니다. – Keith

+0

@Keith : 예, 대답에 추가하겠습니다 ... –

+1

"최소"차이를 지정하지 않겠습니다. 포인터와 배열의 차이를 과소 평가하는 것은 C 뉴비가 만드는 가장 일반적이며 위험한 실수 중 하나입니다. –

관련 문제