10
이것은 다른 question의 연속입니다.문자열 배열 초기화
는 다음과 같은 코드를 생각해
char *hi = "hello";
char *array1[3] =
{
hi,
"world",
"there."
};
그것은 놀랍게도 컴파일되지 않습니다 (분명히 나뿐만 아니라 내가 생각으로 C 구문을 모르는)을 다음과 같은 오류 발생 :
error: initializer element is not constant
을 나는 문자로 문자 *를 변경하는 경우
[]는 그것을 잘 컴파일 :
char hi[] = "hello";
char *array1[3] =
{
hi,
"world",
"there."
};
누군가 내게 이유를 설명 할 수 있습니까?
감사합니다. 코드의 첫 번째 부분을 만들기 위해 const 키워드를 사용하는 방법이 있습니까? – lang2
@ lang2 해당 범위에 포함되지 않습니다. 이 [C FAQ] (http://c-faq.com/ansi/constasconst.html)를 참조하십시오. 'char * const hi' (char에 대한 상수 포인터)조차도 아닙니다. – cnicutar
그냥 뭔가 추가, 그게 작동하지 않을지 모르겠다. 첫 번째 버전은 C++에서 OK를 컴파일한다. - 잠시 후에 C 컴파일러를 사용해 보자. – icabod