我是一名初学者并且一直在阅读关于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;
}
可能是一个愚蠢的问题,但我很有兴趣知道为什么这是错的?该程序显然崩溃了。
答案 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; }
试试这个