程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 在使用C語言指針時的的一個不容易發現的陷阱

在使用C語言指針時的的一個不容易發現的陷阱

編輯:C++入門知識

今天晚上被一段代碼弄得糾結了半天,最後發現了在使用C語言指針時的的一個不容易發現的陷阱。

請看下面兩段代碼,考慮其功能有何不同:

代碼段1:

t=q->next;
p->next=q->next->next;
 q=p=p->next;
free(t);
代碼段2:
p->next=q->next->next;
t=q->next;
q=p=p->next;
free(t);
其中最主要的不同點就在於“t=q->next;”的位置不同。

在代碼段1中,t指向的q的下一個節點,但在代碼段2中,t指向得卻是q的下一個節點的下一個節點,陷阱就在這裡!

注意,一個節點的next域是固定的,當修改了節點的next域後,不管有多少指針指向這個節點,那麼,這些指針的next節點均為修改後的節點,所以,以後要想刪除某個節點後的節點時,必須要做到代碼段1中的處理方法,先找一個指針指向下一個節點,這樣,不管怎麼修改那個節點的next域,都不會對他的下一個節點產生影響。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved