1樓:德昂當
=不是相等,這是賦值的意思
相等是比較的意思,比較兩個數相等用 == 雙等號p=h 賦值,就是把h的地址值賦值給 p ,為以後的操作準備。
h 中放的首地址,p 中放當前前一個節點,此時只有一個首地址,p中也放首地址。
後面,新生成後一個結構體節點,就會把新的放到p中。
其實p中放的一直是當前最後一個節點的地址,這樣在新生成的節點後,才會把新生成的節點地址放入當前節點(即新生成的前一個節點)中的 link中。
link中放的是下一個節點的地址。
2樓:謝應宸
=不是相等,是賦值
p=h就是將指標變數h儲存的地址內容賦給p,這樣就表示指標p和h指向了同一塊記憶體
c語言中相等比較是用的==
3樓:匿名使用者
結構體指標相等,確實是表示都指向同一個結構體。
一般連結串列只需要知道頭指標head即可,然後遍歷頭指標就可以訪問連結串列中所用的元素。
所以head的值不能變~~,所以一般要遍歷連結串列,需要定義一個臨時指標,首先指向頭部,然後逐個往下遍歷
一般就是
p=head;
while(p!=null)
你的程式不完整·可能還有些沒出現~ 看函式名字應該是增加節點吧,增加節點可能有比較的專案,那就需要遍歷列表,這點接和順序表有差別了
順序表查詢容易,替換難, 連結串列是查詢難(遍歷),替換容易
c語言結構體指標賦值問題,求大神給個解釋?
4樓:哎呀
1、「struct person* bb;」 這一句,確定了bb是個指標。
2、所以,你需要取的是bb這個指標指向的地址,所以,前面需要加&。
3、如果你定義的是 「struct person bb;」,那麼,bb就是struct的實體,取其成員age的值時,就不需要前面加&。
4、c++的地址的理解的確是個很頭痛,很費腦筯的問題,多看多練吧。
5樓:最大的寶寶
有這個疑問是因為你還不理解函式呼叫時實際發生了什麼事情。假如不用&,那麼在呼叫scanf函式之前,會把bb->age這個變數儲存的值取出,壓入到堆疊,如果用了&,就會把bb->age變數的地址壓入堆疊。所以認為bb->age是一個地址並沒有問題,問題是編譯器在處理函式呼叫時所做的比你想像的要複雜一些,你的想法適用於賦值這種相對直觀的操作
關於C語言結構體賦值與傳值的問題。具體請看問題補充
首先,p是被定義成一個指向struct test基型別的指標變數,它用於存放指向該型別元素的地址,你定義的b是一個陣列,它用於存放struct test型別的變數,當你理解了變數的地址和變數的型別是不同的情形後你就該理解為什麼此處你的賦值是不正確的。另外看到樓上的朋友說讓寫成 struct test...
c語言如何給指標引數賦值為null
想實現你的想法也不難,只要用指標的指標即可,下面是我寫的一個測試用例 include void func int p int main else return 0 樓主 其實很簡單,例如你定義一個int a 然後把 a的帶入你的函式中,函式的形參為int p 在函式中把 p null,不過最好是用巨...
C語言中可以給指標變數賦值常數嗎
1 申請了空間 在常量區 存放了字串 2 在字串尾加上了 0 3 返回地址,這裡就是返回的地址賦值給了p 字串常量 hello 出現在一個表示式中時,hello 表示式使用的值就是這些字元所儲存的地址 在常量區 而不是這些字元本身。所以,可以把字串賦值給指向字元的指標p,而不能把字串賦值給一個字元陣...