關於指標和鍊錶中的一些問題

2022-08-09 12:45:20 字數 1320 閱讀 6652

學習資料結構時對指標和鍊錶很迷糊,也就自己總結 一下,如果有錯誤或者理解上的錯誤歡迎指正,謝謝

指標

指標是什麼,指標就是指標型別,就和int 型別,float型別等一樣,而對於指標個人當時學習的時候總被*弄得迷糊,

*的作用:

1:型別說明符,int*p,定義p是乙個指向整型的指標變數,p就是這個位址,具體說明教科書有。所以有int *p;p=&a或者是int *p=&a;在這裡時強調一點int* p,可以寫成這種形式,是指p所指向的資料域是整型,

2:指標指向的值的運算

3:野指標

當定義乙個指標變數後,需要對其進行初始化,p=null,或者p=&a;如果不將其初始化,那麼p沒有一定的指向,這時會有一定的危險,同時在呼叫free後,此時需要將指標p=null,如若不然,則此時的p為野指標,所以要將其p=null

鍊錶linklist l和link *l的區別

1:l=(linklist *)malloc(sizeof(lnode))對嗎?

2:l=(linklist)malloc(sizeof(lnode))對嗎?

3:**l=(linklist)malloc(sizeof(lnode))對嗎?

首先看一下單鏈表的儲存結構(參考嚴蔚敏的教材)

typedef struct lnodelnode, *linklist

首先linklist 是什麼?

linklist是乙個指標變數,指向lnode的結構體的指標變數,

linklist l是什麼?怎麼去理解,我是這樣理解的,我們學過了整型變數的定義 int a;a 是乙個整型變數,同時我們可以理解linklist l,定義乙個變數l是linklist型,此時的l 

也是乙個指標變數,指向結構體lnode,此時的l是個一級指標,同理linklist *l,把l換成q是沒有關係的,所以就變成了linklist *q,同理*p是個指標變數,指向lnode,此時我們又回到了指標符號*的作用上,是取值運算,取p所指向的是個指標,也就是說指標p指向指標,所以此時的指標p是個二級指標

malloc用法:

(l型別*)malloc(sizeof(lnode))是系統分配乙個大小為lnode的記憶體,並把這個記憶體的首位址轉換為什麼型別的指標,linklist本身是乙個指標,此時linklist *則是乙個二級指標

所以第乙個不對

注第二個中的l是linklist *l中的l

我們剛才說了此時的l是二級指標,所以也不正確

看第三個**l可以這樣理解*(*l),

即為取值,所以第三個也不成立

二級指標和一級指標

一級指標指向資料域,而二級指標指向指標域,具體見書本

實現鍊錶操作時關於指標的一些問題

typedef structlnode,linklist void create linklist l int headinsert linklist l return 0 我有疑問的地方已在 中表明。我捋了半天也沒捋清,我知道l是指向結構體的指標的指標 l才是實際指向結構體的指標。在我的creat...

關於鍊錶的一些問題的整理

鍊錶的類通常表示如下 public class listnode 一 建立鍊錶 根據給定的陣列使用尾插法和頭插法建立鍊錶 public static listnode createlistnode int array return node private static void addnode l...

關於指標定義的一些問題

關於const在定義常量方面的使用問題 在學習的c c 的過程中,會時常會碰到一些令人大費腦筋拐不過彎來的事情 比如這個const的使用。當我看到和int const a,const int a,const int const a const int a,int const a的 時候,頭都大了,一...