라이브러리 함수에서 주변 코드로 배열을 전달하려면 함수의 반환 값을 사용하거나 포인터 포인터 인수를 사용할 수 있습니다.
다음 예제 코드를 참조하십시오.
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
char* createSourceCopy() {
const char *source = "Example Text";
// We got some text in variable source;
const size_t sourceSize = strlen(source);
char *result = (char*)malloc(sizeof(char)*(sourceSize+1));
strncpy(result, source, sourceSize);
return result;
}
라이브러리의 사용자가이 같은 기능을 사용할 수 있습니다
main() {
char *result = createSourceCopy();
// Do something with result.
// After the use, destroy the array
delete[] result;
return 0;
}
어떻게 배열을 전달하는 또 다른 방법은 이것이다 :
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
bool copySourceText(char **outText) {
const char *source = "Example Text";
// We get some text in variable source;
const size_t sourceSize = strlen(source);
*outText = new char[sourceSize];
strncpy(*outText, source, sourceSize);
return true; // success
}
이 두 번째 변종 이점을 가지고 그 반환 값을 상태로 사용할 수 있습니다. 성공시 true
을 반환하거나 오류가있는 경우 false
을 반환 할 수 있습니다.
이 두 번째 버전은 이와 같이 사용할 수 있습니다.
int main() {
char *result;
if (copySourceText(&result)) {
// Do something with result.
// After the use, destroy the array
free(result);
result = NULL;
} else {
// Error handling
}
return 0;
}
이 도서관은 당신의 프로젝트에 정적으로 또는 동적으로 링크되어 있습니까? – Bathsheba
필요한 헤더를 포함 했습니까? – tesseract
정적으로 연결되어 있습니다. 하지만 차이가 있다면 두 가지를 모두 알고있는 것이 좋습니다. D – user2081328