나는 알아낼 수없는 매우 간단한 문제가 있습니다. 나는 이것을 가지고있다 :배열 char * 및 각각에 대해 메모리를 할당하는 방법
char* array[10];
그렇다면 나는 10 char*
포인터를 스택에 가지고있다. 이제는 각 포인터에 메모리를 할당하고 싶습니다. 마찬가지로 :
error: invalid conversion from ‘void*’ to ‘char*’ [-fpermissive]
: 나는 메모리를 할당하는 첫 번째 단계에서 컴파일 타임 오류를 얻고있다, 그러나
strncpy(array[0], "hello", sizeof("hello"));
: 다음
array[0] = malloc(sizeof(char)*6);
그리고는이 위치에서 일부 문자를 저장
그러나 예상대로 작동합니다 Ideone.
내가 뭘 잘못하고 있니? 내가 무엇을 이해 노력하고 이해하지만 왜 작동하지 않습니다 이해가 안돼. array
의 각 색인에는 char*
이 있습니다. =
기호를 사용하여 각 포인터를 할당 된 메모리 블록에 할당하려고합니다.
내가 뭘 잘못하고 있니? g ++ -g -Wall
귀하의 질문은 C++를 태그해야한다. g ++는 C++ 파일과 함께 사용됩니다. 순수한 C 코드로 컴파일하려고하면 코드가 작동합니다. – Igor
@Igor,이 코드 스 니펫에 gcc와 g ++를 사용하는 것의 차이점은 무엇입니까? – sherrellbc
G ++는 C++ 컴파일러이며 C++ 컴파일러는'void *'에서'AnythingElse *'(예 :'char *') 로의 변환을 요구합니다. C 컴파일러는 C 스타일 캐스트로 쓰여진 경우 컴파일러가 받아 들일 수 있지만 캐스트를 요구하지 않습니다. –