문자열을 저장하기 위해 동적으로 메모리를 할당하는 함수가 있습니다 (문자열의 2D 배열 또는 문자의 3D 배열) char ***
에 있습니다.동적 2D 배열 안에 문자열 리터럴을 저장하는 C
나중에 문자열 리터럴로 저장하면 더 좋을 것이라고 생각하여 배열을 const char ***
으로 변경했습니다. 그러나 이것은 strcpy()
및 free()
을 사용할 때 오류가 발생합니다.
error: passing argument 1 of 'strcpy' discards 'const' qualifier from pointer target type
나는 매개 변수 strcpy()
및 free()
포획이 유형 char *
및 void *
의 것으로 알고 있습니다, 그러나 나는 또한 const char *
대신 char *
에 문자열을 저장하는 좋은 방법이라고 읽었습니다.
문자열 리터럴을 strcpy()
또는 free()
과 같은 작업에 사용할 수 없다면 어떻게 사용합니까? 방금 const char ***
대신 char ***
으로 두어야합니까? 여기 내가 분명히 이해하지 못하는 무언가가 있습니다.
'char ***'유형의 객체도 가리키는 객체도 문자열의 2D 배열 또는'char'의 3D 배열이 아니며, 그 자체가 서로 구별되지 않습니다. 더 일반적으로, 배열과 포인터는 전혀 같지 않으며 다차원 배열은 포인터의 배열이 아니라 배열의 배열입니다. –