Cでローカル配列を含む構造体を返すことは有効ですか?例えばCでローカルポインタを含む構造体を返す
:
// 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);
}
str3
の内容はstring_append
を実行した後に有効になりますか?
構造体に**配列が含まれていない**:ポインタが含まれています。配列とポインタの違いについては、[c-faq](http://c-faq.com)のセクション6を参照してください。 – maraguida
質問を明確にします。私が尋ねるのは、構造体が指す配列の内容が危険にさらされるということですか? – tjwrona1992
これらは有効ではありません。あなたはこれをすることはできません。 –