使用指针初始化结构的成员(C)

时间:2016-08-30 03:00:26

标签: c pointers structure

我是一名初学者并且一直在阅读关于C的书籍,我对结构指针有疑问。 下面我尝试使用“* p”指针

初始化结构的成员
#include <stdio.h>

struct part{
int num;
char *name;
};

int main()
{
   struct part *p;    //creating a pointer with 'struct part' type

   p->num= 5;          //initializing
   p->name= "Jose";

   printf("%d\n",p->num);
   printf("%s",p->name);

   return 0;
}

可能是一个愚蠢的问题,但我很有兴趣知道为什么这是错的?该程序显然崩溃了。

3 个答案:

答案 0 :(得分:1)

指针未初始化。它没有指向有效的内存,因此您无法通过它引用struct成员。做点什么

struct part *p = malloc(sizeof(struct part));

(如果这是本书中的实际例子 - 寻找更好的书?)

答案 1 :(得分:1)

你声明了一个指针,但它并没有指向任何东西。

你必须这样做,例如p = malloc(sizeof(struct part))或者struct part q; p = &q;或以其他方式将其设置为首先指向某事。

查看this old classic的C版。

答案 2 :(得分:0)

#include <stdio.h>  
#include <stdlib.h>

struct part 
{
  int num;
  char *name;
};

int main()
{

struct part *p = (struct part*)malloc(sizeof(struct part)); //memory allocation

p->num = 5;
p->name = "Jose";          //initializing

printf("%d\n", p->num);
printf("%s", p->name);

return 0; }

试试这个