-2
typedef struct stack
{
struct stack *ptr;
char* data;
}*tStack;
typedef struct{
tStack top;
}*tStack_ptr;
void Sinit(tStack_ptr s)
{
s->top = NULL;
}
int main() {
//stack
tStack_ptr s;
Sinit(s);
return 1;
}
トップにNULLを割り当てようとすると、セグメンテーションフォルトが発生します。 匿名の構造体と関係がありますか?スタックを初期化する際のセグメンテーションフォルト
's'は初期化されていないポインタです。あなたは彼にいくつかの有効なメモリを指摘させる必要があります。 – mch
これを以下に減らすことができます: 'struct foo {int bar; }; struct foo * ptr; ptr-> bar = 42; 'あなたは初期化されていないポインタを逆参照しています。 – melpomene
typedefの背後にあるポインタを隠すことは一般的には悪い考えです。 – melpomene