記憶體空間
valgrind
陣列越界
實際使用的時候, 不需要這樣分配記憶體
自定義資料型別
realloc函式
每次向記憶體要乙個記憶體空間
預先不知道使用者需要多少記憶體, 怎麼讓使用者持續輸入, 然後輸入q結束輸入
#include
void
swap
(int a,
int b)
;int main (
void
)void
swap
(int a,
int b)
這樣交換的只是兩個變數的值, 並不是兩個變數的位址, 所以最終會有交換失敗的bug.
原來的交換** , 並不能交換變數的位址
void
swap
(int a,
int b)
調整後的**
void
swap
(int
*a,int
*b)
當在函式引數前面標記星號, 就相當於告訴計算機, 我不要整型變數, 我要整型變數的位址.
表示傳入資料的位址
交換變數的位址最後的**為
#include
void
swap
(int a,
int b)
;int main (
void
)void
swap
(int
*a,int
*b)
使用函式malloc
給變數記憶體位址. 使用free函式歸還使用的記憶體
堆 : 在記憶體的頂部, 存放的是**段.
棧 : 在記憶體的底部, 當函式被呼叫的時候, 使用的是棧這部分的儲存空間
找到記憶體洩漏的錯誤
#include
#include
intmain
(void
)voidf(
void
)
其實這裡有乙個陣列越界的錯誤, 但是程式可能會正常執行, 因為分配記憶體的時候, 可能會分配乙個比你指定大的記憶體.
)語法
typedef struct
sutdent;
student students[enrollment];
: 意思是給我這麼多的student結構, 整個陣列叫students.
重新分配記憶體
但是這樣儲存值, 會導致這些值不會被儲存在一起
可以每次向記憶體要乙個儲存整數 加另乙個整數的位址大小的空間.
使用
typedef struct node
node;
#include
#include
intmain
(void)}
}
Go 語言解決 50 層台階問題
有50層台階,乙個人每步可以上一層或者兩層,問一共有多少種上樓的方式。50層可以由 49 層跨一步,也可以由48層跨兩步,49層則可以由48層跨一步或者47層跨兩步,只有第1層只能由第0層跨一步到達,由此可見,當n 1 時,第 n 層可由 n 1 層跨一步或者 n 2 層跨兩步到達。package ...
學習C 語言的50條忠告
50條忠告 其中有幾條覺得寫的不夠貼切,所以刪了,發了餘下的部分 1.把c 當成一門新的語言學習 2.看 thinking in c 不要看 c 變成死相 3.看 the c programming language 和 inside the c object model 不要因為他們很難而我們自己...
ThinkPHP5 0 多語言切換
請各位大佬輕虐。感謝。首先,不說其他,肯定是先將config.php 中將配置修改 是否開啟多語言 lang switch on true,語言種類 lang list zh cn en us 自動偵測語言 lang auto detect true,var language lang 預設全域性過...