結構體指標和結構體陣列

2021-08-03 04:36:56 字數 2078 閱讀 6652

struct 

ha[100],b,*c[3],*d;

結構體指標其實是乙個指標,它儲存的是指向某個結構體的「位址」,所以結構體指標陣列儲存的其實是指向一組結構體的「位址」陣列,它本身並不包含結構體的具體內容(沒有被分配記憶體)

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

d=&b; //讓d指向b,d儲存的是b的位址,這樣就能通過d來呼叫b了

要麼用malloc為他們分配記憶體:

d=(struct h *)malloc(sizeof(struct h));

這樣d就指向系統為其分配的一塊記憶體,其內容就是struct h中的東西

///
a是乙個結構體陣列,已經有100個節點了。不需要再分配空間了。

b是乙個結構體變數,也已經有空間了,就和int b;已經有空間了一樣。

c是乙個指標陣列,c也已經有空間了,有3個元素,但是這三個元素是還沒有分配空間的指標,所以要用malloc分別為他們分配記憶體。

d是乙個結構體指標,和int *d;一樣還要為他分配記憶體空間;

其實結構體就可以理解為是一種和int這些一樣的資料型別,它在定義變數和指標這方面的操作和基本資料型別是一樣的。

比如:struct name na;

int ia;

這裡的na是型別struct name;的乙個變數。而ia是int型別的乙個變數。

struct name* np;

int* ip;

這裡的兩個指標也是一樣的,只是型別不同。

可以這樣分配記憶體。

1. np = &na; ip = &ia;

2, np = (struct name*)malloc(sizeof(struct name));

ip = (int*)malloc(sizeof(int));

宣告陣列也是一樣的。

比如: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個節點的陣列

dynarray = (struct name*)malloc(100 * sizeof(struct name));

dyiarray = (int *)malloc(100 * sizeof(int));

其實資料結構就是我們自己定義的一種型別。所以在宣告變數的時候和基本資料型別(比如:int)是沒有什麼分別。

如果你覺得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的值

malloc一般在輸入不確定的時候使用,可以減小記憶體的使用,但分配記憶體是耗時間的,因而對速度要求很高時一般直接開陣列.

結構體型別 結構體變數 結構體陣列 結構體指標

問題1 一元錢換為1 2 5分的硬幣,有多少種兌換方?本題要點分析及參 對各種可能情況進行一一測試。這是實現迴圈的一種方式 窮舉法 但實際上只有只有餘額才能兌換成其它面值的硬幣 main 注意換行的控制和每列的對齊 問題3 某鐵路線上有10個站,需要準備多少種客票?main b a 0 p prin...

c c結構體陣列 結構體指標

結構體中自己常常弄不清的。兩個常用的結構體陣列 結構體指標 將自定義的結構體放入到陣列中方便維護 語法 語法 struct 結構體名 陣列名 元素個數 舉例 struct student intmain for int i 0 i 3 i 2 結構體指標 顧名思義就是指向結構體的乙個指標 通過指標訪...

和結構體 9 3 結構體指標

01指向結構體變數的指標 1 指向結構體物件的指標變數既可以指向結構體變數,也可指向結構體陣列中的元素。2 指標變數的基型別必須與結構體變數的型別相同。3 c語言中允許把 p num用p num來代替,代表乙個箭頭,p num表示p所指向的結構體變數中的num成員。02指向結構體陣列的指標 1 p ...