#include
#include
struct container {
int number;
char *string;
};
int main()
{
struct container *c;
c = malloc(sizeof(struct container));
if (c == NULL) exit(1);
scanf("%d", &c->number);
scanf("%s", c->string);
printf("%d:%s\n", c->number, c->string);
free(c);
return 0;
}
一运行就崩溃
问如何改正
container里面string只是个char型指针,没有分配内存
数据结构中的指针都是用来指向别的地方的,通常用来配合使用其他固定的地方,别当做有内存直接拿来使用或者赋值;这里的错误就是直接将数据结构中的指针拿出来输出,导致踩空指针异常。
struct container {
int number;
char string[20];//字符数组分配内存空间。否则怎样存数据?
};
int main()
{
struct container *c;
c =(container*) malloc(sizeof(struct container));//加一个类型转换
if (c == NULL) exit(1);
scanf("%d", &c->number);
scanf("%s", c->string);
printf("%d:%s\n", c->number, c->string);
free(c);
return 0;
}
把结构体的字符指针改为字符数组,就可以存放数据了,因为你定义的字符指针很可能指向一个未知地址,对未知地址写入可能会出现段错误