指向結構體的指針必須初始化
#include<stdio.h>
void main()
{
struct abc{
int a;};
struct abc *p;
p->a=1;
printf("%d",p->a);
}
這個編譯沒有問題,但是運行是段錯誤,請問為什么呢?
解答:
因為你定義了一個結構體指針p,用來指向此類結構體,但是你卻沒有給他賦值,此時p的值為NULL,你並沒有在內存中為p分配任何空間,所以p->a=1這句就會出段錯誤。
修改方法1:可以給p分配一段內存空間,並使其指向此空間:
p=(struct abc *)malloc(sizeof(struct abc));
p->a = 1;
方法2:可以讓p指向一個已存在的內存空間:
struct abc temp;
p=&temp;
p->a = 1;
————————————————
版權聲明:本文為CSDN博主「hk121」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/hk121/article/details/80839813
