我不能完全弄清楚如何做到這一點,我試過這個和幾個變化,有些將編譯和看似工作正常,但我會得到非常隨機的段錯誤,它有一些事情要做與我聲明這些結構的方式。結構中的所有信息都是動態的。請讓我知道這樣做的正確方法,謝謝。結構中的動態結構
#include <stdio.h>
#include <stdlib.h>
typedef struct
{
char* s2string1;
char* s2string2;
int s2int1;
} struct2;
typedef struct
{
char* s1string1;
char* s1string2;
struct struct2* mystruct;
int int1;
} struct1;
struct struct2* RetS2(char* CopyMe)
{
int* Array = (int*) malloc (sizeof (int) * 5);
Array[0] = strlen (CopyMe);
struct struct2* S2 = (struct struct2*) malloc (sizeof (struct2));
S2->s2int1 = Array[0];
return S2;
}
struct struct1* RetS1()
{
struct struct1* S1 = (struct struct1*) malloc (sizeof (struct1));
struct struct2* S2 = RetS2();
S1->mystruct = S2;
S1->int1 = S2->S2int1;
return S1;
}
int main()
{
struct struct1 Top = RetS1();
if (Top->mystruct->s2int1 == 10)
// do something
return 0;
}
在結構中不能有「動態」結構。你可以擁有什麼(和你使用什麼)是指向另一個結構中的結構的指針。但是這與任何其他指向結構的指針都沒有什麼不同。 – Olaf
不要將'malloc'和朋友的結果放在C中!並啓用警告並注意他們! – Olaf
你總是把你不再需要的東西放在地上嗎? – EOF