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...