1

私はおそらくいくつかの信じられないほど愚かな間違いをしているのですが、私はそれを見つけることができません、それは簡単です:

int main()
{

typedef struct drzemka typ;
struct drzemka {     
int strukcje;
};
typ *d;
d->strukcje = 1;
}

そしてそれは機能していません

4

4 に答える 4

4

現在、ポインタは有効なメモリに設定されていません。このメモリをstruct:に割り当てる必要があります。

#include <stdlib.h>
/* ... */
typ *d = malloc(sizeof(typ));

割り当てる他のメモリと同様に、完了後にそれを解放することを忘れないでください。

free(d);
于 2012-09-20T17:31:39.897 に答える
3

有効なものに割り当てる必要がありdます。あなたはそれにいくらかの記憶を与えなければなりません。今のところ、それはtyp何も指していないタイプのポインタです。次に、あなたは何も尊重しようとしています。

ヒープからポインタにメモリを割り当てて、そのまま使用します。

typ *d = malloc(sizeof(typ)); 
d->strukcje = 1;
free(d);

または、静的コピーをスタックに配置します。

typ d;
d.strukcje = 1; 
于 2012-09-20T17:32:17.323 に答える
0

正しいコードは次のとおりです。

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;

}
于 2012-09-20T17:34:57.663 に答える
0

これを試して:

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);
}
于 2012-09-20T17:36:51.610 に答える