Ist es zulässig, eine Struktur zurückzugeben, die ein lokales Array in C enthält?Zurückgeben einer Struktur mit einem lokalen Zeiger in C
zum Beispiel:
// Define a string type
typedef struct {
char* c_str;
} string;
// Function to append 2 strings
string string_append(string str1, const string str2) {
// Create a local array
char buffer[strlen(str1.c_str) + strlen(str2.c_str) + 1];
strcpy(buffer, str1.c_str);
strcat(buffer, str2.c_str);
// Store a pointer to the local array in a struct
string ret = { buffer };
return ret;
}
int main(int argc, char* argv[]) {
string str1 = { "hello" };
string str2 = { "goodbye" };
string str3 = string_append(str1, str2);
}
Wird der Inhalt von str3
gültig string_append
nach der Durchführung?
Ihre Struktur ** enthält kein Array: Es enthält einen Zeiger. In Abschnitt 6 der [c-faq] (http://c-faq.com) finden Sie weitere Informationen zu den Unterschieden zwischen Array und Zeiger. – maraguida
Ich werde die Frage klären. Was ich frage ist, würde der Inhalt des Arrays, auf den die Struktur verweist, kompromittiert sein? – tjwrona1992
Sie werden nicht gültig sein. Du kannst das nicht tun. –