私はおそらくいくつかの信じられないほど愚かな間違いをしているのですが、私はそれを見つけることができません、それは簡単です:
int main()
{
typedef struct drzemka typ;
struct drzemka {
int strukcje;
};
typ *d;
d->strukcje = 1;
}
そしてそれは機能していません
現在、ポインタは有効なメモリに設定されていません。このメモリをstruct
:に割り当てる必要があります。
#include <stdlib.h>
/* ... */
typ *d = malloc(sizeof(typ));
割り当てる他のメモリと同様に、完了後にそれを解放することを忘れないでください。
free(d);
有効なものに割り当てる必要がありd
ます。あなたはそれにいくらかの記憶を与えなければなりません。今のところ、それはtyp
何も指していないタイプのポインタです。次に、あなたは何も尊重しようとしています。
ヒープからポインタにメモリを割り当てて、そのまま使用します。
typ *d = malloc(sizeof(typ));
d->strukcje = 1;
free(d);
または、静的コピーをスタックに配置します。
typ d;
d.strukcje = 1;
正しいコードは次のとおりです。
struct drzemka {
int strukcje;
};
typedef struct drzemka typ;
int main()
{
typ d;
d.strukcje = 1;
}
また
int main()
{
typ* d = (typ *) malloc(sizeof(typ));
d->strukcje = 1;
}
これを試して:
typedef struct drzemka {
int strukcje;
}typ;
int main() {
typ d;
typ * p = &d;
p->strukcje = 1;
printf("The value of strukcje is %d",p->strukcje);
}