寫乙個今天得到的關於c指標和結構體相關的總結

2021-06-20 10:36:17 字數 1149 閱讀 9792

#include#includetypedef struct node;

typedef node* list;

void init_list(list &l)

l->next = null;

}void add_element(list &l,int e)

node *tmp = (node *)malloc(sizeof(node));

tmp->data = e;

tmp->next = p->next;

p->next = tmp;

}int main()

scanf("%d",&n);

while(n--)

node *p = la;

*la = *lb;

while(p->next!=null)

printf("\n");

p = lb;

while(p->next!=null)

printf("\n");

return 0;

}

其實大一的問題到大三來解決真是有點讓人笑話了, 誰讓學過c之後就一直沒碰過了呢,  今天在複習資料結構手寫乙個鍊錶都遇到問題,定義的乙個表頭指標傳進去, 怎麼都沒有反應, 結果調bug的時候發現指標列印為-1!!!! (應該是0),經過詢問,發現指標實際上可以理解為乙個整數型別的變數,  該變數反應的是其他元素的位址,所有的人都要引以為戒哦,   學過物件導向語言的人會被指標迷惑,  談到指標 就是引用,  但是 對於指標本身的值問題上, 我們可以毫不含糊的將它分別對待, 就當做乙個普通變數, 函式內要初始化malloc分配乙個隨機位址給這個指標賦值,  形參要是不寫& 引用 ,malloc的位址可以說就被存放在異次元了。。。   另外, c語言是沒有自動**這一說,  我做了乙個實驗, 講兩個不同鍊錶的值相互賦值, 結果可以成功賦值,  那麼問題來了: 之前多餘的元素到哪兒了?

結果可想而知, 丟了。 雖然沒有任何變數引用到他,  他還是像寄生蟲一樣扎根在記憶體中, 這也是c 和c++中很重要的記憶體管理問題, 動態分配的記憶體一定要手動釋放, 否則必有後患~。   想自動管理記憶體, 可以使用c++ std標準庫中的 shared_ptr ,  之前學習cocos2d-x也提到過引用計數。貼上我這次試驗的小**。

感謝ftiasch給我的啟示。

C 中乙個關於複製建構函式和指標的問題

copy建構函式是顯式地去處理乙個物件初始化另乙個物件的問題,如果類含有乙個指標的話,那麼處理起來主要分為兩種情況。a.指標在類的構造或者初始化時指向動態分配的記憶體,並在物件析構時對該指標進行delete操作,釋放記憶體資源。這種情況下,對指標的操作是萬萬不能簡單對指標位址進行賦值操作的。應該是動...

今天犯了乙個關於引用的低階錯誤

今天犯了乙個引用的低階錯誤,如下 std list recsim frame datas g recsim 264frame datas if strcmp dev user,265 0 我們的本意是 當user不為 265 時,recsim frame datas是g recsim 264fram...

關於指標的乙個小問題

任務 c primer 4th 習題5.18 編寫程式定義乙個vector物件,其每個元素都是指向string型別的指標,讀取該vector物件,輸出每個string的內容及其相應的長度。自己的方法 string s string sarr 10 vector內的每個元素都是指向string型別的指...