1. 程式人生 > >結構體指標和結構體陣列

結構體指標和結構體陣列

struct   h
{
  BTNode *TQ;
  int level;    ?
}a[100],b,*c[3],*d;

///////////////////////////////////////////////


所以當用到他們時,要麼重定向,比如:

///////////////////////////////////////////////


比如:
struct name { 
  int data;
} na;
int ia; 
這裡的na是型別struct name;的一個變數。而ia是int型別的一個變數。
struct name* np;
int* ip;
這裡的兩個指標也是一樣的,只是型別不同。
可以這樣分配記憶體。
1. np = &na; ip = &ia;


宣告陣列也是一樣的。
比如:
struct name nArray[100];
int iArray[100];
iArray就是有100個int型的變數。
nArray也是一樣的有100個struct name 這種型別的變數。

指標陣列也是一樣的。
struct name* npArray[10];
int* ipArray[10];
ipArray表示有10個整型的指標。
npArray表示有10個struct name型別的指標。

宣告動態陣列的方式也是一樣的。
struct name* dyNArry;
int* dyIArray;

比如我們要申請100個節點的陣列



如果你覺得struct name的型別名稱太長了。你可以用typedef來定義
例如: typedef struct name Name;
以後就直接用Name做型別名稱就可以了 
////////////////////////////////////////////////////
a是陣列,a是有100個h型別元素的陣列,b是h型別的元素,c是h型別的陣列指標,c的每一個元素都和d的型別是一樣的,例如c[0]可以指向a[0],也可以指向b,d也可以指向b或a[0].
以下幾句是合法的
c[0]=&b;//c[0]指向b
d=&b;//d指向b
d=c[1];//指標c[1]賦值給d,因而d和c[1]指向的成員相同
d->level;//輸出指標d指向的h型別結構體的成員level的值
.