C 通过指针将值赋值给结构的成员

C 通过指针将值赋值给结构的成员,c,pointers,structure,C,Pointers,Structure,我可能犯了一些非常愚蠢的错误,但我找不到,很简单: int main() { typedef struct drzemka typ; struct drzemka { int strukcje; }; typ *d; d->strukcje = 1; } 而且它现在不工作您的指针未设置为有效内存。您需要为结构分配此内存: #include <stdlib.h> /* ... */ typ *d = malloc(sizeof(typ)); 现在您的指针未设置为有

我可能犯了一些非常愚蠢的错误,但我找不到,很简单:

int main()
{

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

而且它现在不工作

您的指针未设置为有效内存。您需要为
结构
分配此内存:

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

现在您的指针未设置为有效的内存。您需要为
结构
分配此内存:

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

您需要将
d
分配给有效的内容。你必须给它一些记忆。现在它是一个类型为
typ
的指针,没有指向任何东西。那你就是在试图尊重那些什么都没有的人

将堆中的一些内存分配给指针并按原样使用:

typ *d = malloc(sizeof(typ)); 
d->strukcje = 1;
free(d);
或者在堆栈上放置一个静态副本:

typ d;
d.strukcje = 1; 

您需要将
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;
}


正确的代码是:

struct drzemka {     
int strukcje;
};
typedef struct drzemka typ;


int main()
{
   typ d;
   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);
}
试试这个:

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);
}

阅读编译器发出的警告。它应该说明未初始化变量
d
的使用。gcc在编译时没有给出错误。@BSull:尝试打开一些合理的警告设置,如
-Wall
,您将清楚地看到“警告:d在这个函数中未初始化使用”。是的,我只是说这不是编译错误。请阅读编译器发出的警告。它应该说明未初始化变量
d
的使用。gcc在编译时没有给出错误。@BSull:尝试打开一些合理的警告设置,如
-Wall
,您将清楚地看到“警告:d在这个函数中未初始化使用”。是的,我只是说这不是一个编译错误。我仍然想知道为什么在main()范围内使用struct在任何情况下都是好的way@Yarneo例如不好。它不是标准的C,尽管GCC允许它作为一个扩展。该结构应该在
main
之外定义。为@adamrosenfield的快速响应干杯我仍然想知道为什么在任何情况下,将该结构放在main()范围内都是好的way@Yarneo例如不好。它不是标准的C,尽管GCC允许它作为一个扩展。结构应该在
main
之外定义。为@AdamRosenfield的快速响应干杯