關於不同檔案,結構體的定義與宣告

2021-08-19 18:23:48 字數 1281 閱讀 2853

在寫簡單迷宮和二叉樹**時,由於要用到棧和佇列,要將二叉樹的結構體宣告在棧裡,碰到結構體的宣告問題,看了好久,終於發現錯誤。

bintree.h

#include "stack.h"

typedef

char btdatatype;

typedef

struct bintreenode

btnode, *pbtnode;

typedef pbtnode datatype;

stack.h
typedef

int datatype;

typedef

struct stack

stack, *pstack;

如果我想用到棧結構,就的將棧裡的結構體中的datatype替換成pbtnode。

錯誤的方法:

stack.h

extern pbtnode;

typedef pbtnode datatype;

typedef

struct stack

stack, *pstack;

這種方法看似正確,其實是錯誤的,在stack.h宣告的並不是乙個結構體,pbtnode只是在bintree.h裡給結構體起的別名,它不能延用到stack.h中

正確的方法

stack.h

extern btnode;          //先將真正的結構體宣告

typedef

struct btnode *pbtnode;//然後在利用typdef給它起別名

typedef pbtnode datatype;

typedef

struct stack

stack, *pstack;

方法二:直接定義法

bintree.h

#include 

"stack.h"

stack.h
typedef

char btdatatype;

typedef

struct bintreenode

btnode, *pbtnode;

typedef pbtnode datatype;

typedef

struct stack

stack, *pstack;

這裡我們直接將二叉樹的結構體定義在棧中,然後引用棧的標頭檔案,簡單粗暴,但是不如第一中實用。

結構體的定義宣告 記憶體對齊

什麼是結構體?結構體怎麼進行定義宣告?結構體是一種資料結構,可以被宣告為陣列 指標和變數,結構體內部通常是由多個相同或不同型別的變數組成,舉幾個例子來說明理解它的定義宣告,如下 1.struct student 結構體中包含指向自己的指標 struct complex 結構體間互相包含時,需要對其中...

C 中結構體的宣告和定義

1 定義乙個結構體,型別為struct student 2struct student 3 8 9 定義了乙個結構體,型別為struct student 且定義了乙個結構體例項,名叫stu 10 struct student 11 stu 16 17 定義了無名的結構體,且定義了乙個結構體例項,名叫...

Hive不同檔案的讀取與序列化

stored as textfile 直接檢視hdfs stored as inputformat class 自己定義outformat class 基本步驟 1 編寫自己定義類 2 打成jar包 3 加入jar檔案,hive add jar jar 當前生效 或者複製到hive安裝資料夾的lib...