指標(心路歷程)

2021-10-25 09:33:58 字數 2554 閱讀 7347

2019/3/10

許多初學c*語言指標的人剛開始會理不清思路,即使有教材書在比上也會一頭霧水,我也是剛入門,給一下我的想法。

指標,簡單來說就是乙個存放位址的變數。你可一聯想門牌號和房子的關係。

c語言的指標,主要兩種運算子

*&

* 可以簡單理解為取值,而&可以理解為取址。

例如char *cp=&ch;    //cp存放的ch的位址。

char **cp=&cp;      //這種就是指向指標的指標,間接訪問

**即使這樣我感覺我也沒有把我的理解,寫出來。這可能需要自己在加強下理解。

多看幾遍,慢慢來。

2020/11/13

寫的原因很簡單:因為最近再學資料結構,我是用c語言寫的所以,沒有用c++方便。 在看了王道21年的資料結構的書前面幾章的時候,

我用指標去實現書上的**。遇到了幾個坑,希望可以分享下,給大家探探路。

1.  指標不能直接用scanf賦值,一定要先讓指標指向某個變數,再用賦值語句

比如這個:

int a,*t=&a;

scanf("%d",t);//這個就等價 scanf("%d",&a);

如果提前不指向,那麼t就是乙個野指標,不知道指向**.

2. 當看到書上的代買例如 bool  init_sqlist(lnode &l)  這種是c++型別的時候

我們也可以把它用c語言的指標來實現。

typedef  struct sqlist *linklist;//把linklist通過typedef定義成指向sqlist 結構體的指標 

bool init_sqlist(linklist l)//這裡是把l的位址傳遞進來,所以和上面用c++實現的形式相同

2020/11/15

今天要講的是,指標非法訪問(野指標),導致的問題

起因是我今天在寫乙個關於佇列基本操作的題目,中間用了挺多的指標。然後後面用 release版本和debug 版本編譯都沒有警告和出錯,但只有release 版可以差不多正常執行,(除了中間有個輸入exit退出,做不到,它會卡在**然後退出外)。debug 版直接執行結束,剛開始我用的是cfree5 編譯的,沒有返回0之類的資訊,所以我又用devc++,編譯了一邊,也是沒有任何的警告和錯誤,但是它返回了乙個 return value 3221225477

在我沒有動態分配記憶體的時候,後面即使沒有動態分配,沒有free()函式實際執行也是錯的。

2020/12/16

這回講的指標,源於我在12/15日在tzoj上做的一道題。

實現函式createheader用於建立空鍊錶,實現insert函式並呼叫它完成帶頭節點鍊錶的建立。 

部分**已經給出,請補充完整,提交時請勿包含已經給出的**

void printlinklist(node *head)

free(head);

}int main()

printlinklist(head);

return 0;

}

我剛開始寫的**是這樣

void createheader(node**p)

執行的時候返回乙個錯誤,根據之前錯誤的慣例,我立馬察覺到又是指標出問題了。隨後檢視了有指標出現的地方,原因就出在,createheader這個函式上;下面來解釋下為什麼會錯。

由於剛開始p=&head,這個時候形參p中存放的是head的位址,當我們用malloc函式,重新給p分配記憶體空間的時候,p存放的值已經不是head的位址了,而是系統分配的一塊新的位址。

此時在對(*p)分配記憶體空間已經不是我們想要的(給head分配記憶體空間了),而是另外乙個node *的指標了。如果這個時候,有對head進行訪問的話,是不是就出錯了。

下面給出正確的**

void createheader(node **p)

其實就把第一行刪掉就好了。

2020/12/18

昨天和今天都遇到滑鐵盧,總結原因不好好審題。乙個二叉樹的題和乙個鍊錶的題,都一直runtime error,奇怪了。按照之前的總結我也檢視過了,沒問題啊。沒辦法,回頭再仔細地看下題目,我 omit 一些個重要的條件,導致我自己測試的時候是沒問題,而提交的時候,就會把我沒想到的情況,用來測試,結果就是runtime error,比如資料的規模達到了,百萬級,而我卻用十萬級別的陣列,這個時候就會導致陣列越界,而陣列用不能開到百萬級別,後來我就不用陣列,換了個方式就過了。

心路歷程 20161118

171219我王老五又回來水題了!由於種種原因 比如不想參加本班只有四人參加的月考 本wc都去不了的蒟蒻回來準備,省選了,爭取拿到胸牌233.昨天因為不出去培訓,還被教練教育了一番quq 20天 期間單個的晚上刷水題 各種演算法的基本思想和裸的 實現 不追求比較深的內容。難度什麼的不好說 比如kmp...

踏上心路歷程。。。

其實我一直不喜歡把自己的心情筆記寫在部落格上,總覺的有點涉及隱私,加上我這人比較害羞 因為某人去年我連續好幾個月每天不間斷寫自己每天的心情筆記,不過現在再也沒機會因為某人而寫了,但這段經歷卻讓我習慣了寫些心情筆記,因為通過寫心情筆記讓我可以總結自己的學習和心靈感悟,能讓我悟出一些新的體會,讓我的思想...

C 學習心路歷程

這裡只記錄c 的特色地方,想來本科專攻c 跟圖形程式設計,真心沒想到半路殺出來個unity還特麼用了c 所以嘛,最近惡補這方面的東西,把跟c 相似的地方看看就好,這裡把c 的好東東都記錄下,有一些還挺有逼格的說,希望能有幸成為高手!1 params關鍵字 本關鍵字在於可變長引數的利用,比如 stat...