C語言結構體指標問題,求大神賜教啊

2021-05-04 18:26:51 字數 1763 閱讀 4969

1樓:匿名使用者

對l的操作不能完全說是對head的操作,對於操作它們的元素時才能說是等同的,而你可以讓l指向另外一個連結串列。

l 一般會向「後」(l=l->next;其實是無前後這種說法的,都是在存諸中)移動,那麼有時需要返回它的第1個元素的地地址時,你只需返回head就可以了,而不必去計算你向後移動了多少單位(其實你確實可以去計算,然後返回)。

2樓:郝在益

首先,你這裡的題目給的不是很準確。

linklist到底指的是結構體了,還是結構體指標了??

如果是結構體的話,那麼下面的這句就完全的錯了。所以我猜想應該是結構體指標。

head=l=(linklist)malloc(sizeof(lnode));

的確是將head與l所指向的空間變為一樣了。但是,head我們一般是作為頭指標的,它一般都是指向某個連結串列的第一個結構體元素。而l卻是可以一直變換的。

這樣,無論這個連結串列有多少個元素,我們都知道有一個head指向它的第一個元素,這樣也就能輕鬆訪問到連結串列的每一個元素了

3樓:風若遠去何人留

沒錯 從你這個寫法上可以看出 linklist應該是lnode*型別這個應該是連結串列操作的開始部分

head一般指向頭結點,不變

而l一般指向新結點,會變化

最初始時只有一個結點,所以用head=l的方式後續應該會對l進行操作,改變l的指向,但head的指向不會變當l本身值改變時(不是l指向的內容改變,而是l本身),l和head指向會不同,這時就不是對head的操作了

4樓:青衣風雨

兄臺,完整**貼出來吧,這個樣子很難看得懂你問的是什麼。

至於head=l=malloc之後

凡是 l-> 這個樣子的操作,就是對 head-> 的操作。

但是 l = xx 這個樣子的操作,就和head完全沒有關係,因為這個時候,l已經不等於head了

另外一種是如果是在子函式中的操作,有可能你傳遞引數的方式有誤,導致對head的修改無法傳遞到函式外。

c語言結構體指標賦值問題,求大神給個解釋?

5樓:哎呀

1、「struct person* bb;」 這一句,確定了bb是個指標。

2、所以,你需要取的是bb這個指標指向的地址,所以,前面需要加&。

3、如果你定義的是 「struct person bb;」,那麼,bb就是struct的實體,取其成員age的值時,就不需要前面加&。

4、c++的地址的理解的確是個很頭痛,很費腦筯的問題,多看多練吧。

6樓:最大的寶寶

有這個疑問是因為你還不理解函式呼叫時實際發生了什麼事情。假如不用&,那麼在呼叫scanf函式之前,會把bb->age這個變數儲存的值取出,壓入到堆疊,如果用了&,就會把bb->age變數的地址壓入堆疊。所以認為bb->age是一個地址並沒有問題,問題是編譯器在處理函式呼叫時所做的比你想像的要複雜一些,你的想法適用於賦值這種相對直觀的操作

c語言問題,求大神解答(動態分配結構體變數指標陣列) 50

7樓:匿名使用者

struct student * parr =(student *)malloc(len*sizeof(student));

--------->

struct student * parr =(struct student *)malloc(len*sizeof(struct student));

c語言中陣列指標和結構體指標問題

樓上都說的很不錯。針對補充,我說兩句 結構體名字不是指標,結構體陣列的名字才是指標 就好像int x x不是指標,int x 2 x是常量指標 同樣 struct aa aa x x不是指標,aa x 3 x是常量指標 對於陣列int a 2 我們通常把a看成是指標 但實際上,這個指標並不存在的,a...

c語言結構體程式設計題,求大神,C語言結構體程式設計題,求大神!

根據題意 一 教師資訊定義為結構體,其成員年月也為結構體 可直接定義成兩個成員變數,本題沒有強制要求 婚姻狀態採用共用體型別。二 輸入資訊直接寫在main函式,實際軟體開發應單獨寫輸入函式,輸入驗證我只寫了性別和婚姻狀態的驗證,其餘成員的輸入驗證需要自己新增。實際開發,驗證也應單獨寫函式呼叫 三 輸...

關於C語言指標問題,求大神,C語言指標的問題,求大神!!

第一個函式的兩個指標是區域性變數,函式完了就銷燬了,換不換都一樣,第二個是直接操作指標指向的地方 記憶體單元 也就是直接操作變數。不恰當的比方,好比停車,有個圖紙記錄了每個車位停的什麼車,第一個就相當於另外拿了個圖紙畫了一下想要的位置,原來的圖沒變,函式結束後來的圖被扔了,原來的圖保留著,實際的車並...