【C語言】指向結構體的指針必須初始化


指向結構體的指針必須初始化

#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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM