Harvard CS50X C語言筆記

2021-10-14 12:21:14 字數 1754 閱讀 5526

記憶體空間

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 預設全域性過...