c語言結構體指針必須初始化


先說結論

  1. 結構體指針需要初始化 
  2.  結構體指針的成員指針同樣需要初始化   
  3.  結構體變量定義的時候就已經分配了內存空間,而上面兩個確沒有 

struct test{
int i;
struct buf *p;
} t; //定義結構體t

struct buf{
char data[512];
struct buf *prev;
struct buf *next;
} ;

 

t定義后里面的成員變量在GCC下已經初始化為0了,但p並沒有malloc分配空間,因此對t.p->prev的任何賦值操作都會出錯,解決方法:

1、把  struct buf *p 改為 struct buf p;由於定義后已經分配空間,可以直接使用p.prev = &p;

2、malloc分配空間  t.p = (struct buf*) malloc(sizeof(struct buf));p.prev =  之后就可以賦值了****


免責聲明!

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



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