1樓:記憶體塊生命週期
emm可以考慮,但是你看情況吧。拿個我常用的list說事吧。
假如我有乙個委託管理記憶體的list:
def stc List List;
def stc Node Node;
def stc List
u64 length;
Node * head;
Node *tail;
void *(*obj_delete)(void* obj);
}List;
def stc Node
u64 value;
u64 size;
u64 index;
Node *next;
}Node;
List *list_new(void *(*obj_delete)(void *obj));
u64 list_get(List *list,u64 index);
u8 list_remove(List*list ,u64 index);
void list_delete(List *list);
def stc Iterator
略)其中,在外面的5個函式都是固定不變的,寫完沒問題基本不會再改。
這樣,這個list模組分為了兩部分的函式,分別是固定動作的函式和需要不定動作的物件析構函式。
但是對於欲儲存的物件而言,自身的析構函式又是固定的,只是對於儲存物件的容器List而言是動態的。
所以你看,「變」和「不變」只是乙個相對的概念,看你針對誰。
2樓:宇宙是人類的
有點面相物件設計思路的味道了。
如果你了解過「設計模式」,就會知道乙個軟體工程的核心要義:把不變的和變化的分開。
如果你是在做乙個比較複雜的軟體專案的話,這樣做是很有必要的,但如果只是乙個功能十分單一的小程式,那分不分開都沒啥區別。
此外如果函式呼叫非常頻繁,那最好還是不要拆或者使用內聯函式,因為函式呼叫需要切換上下文環境,是乙個比較耗時的操作。
寫程式時c和cpp混著用是一種不好的習慣嗎?
Seayoki 我曾無數次地說過,C 和C是兩種完全不同的語言,但還有人無知地認為C 是C的超集。C std 已經可以代替絕大部分 C Library 裡的東西。的確也有一些不能代替,比如cmath。Cpp是提供cstdio,cmath這樣的庫的。用C庫和用C程式設計樣式是兩種完全不同的概念。Cpp...
請問,人生是否有固定不變的法則?
冰雪涼 除了生老病死,吃喝拉撒這些注定要會每個人身上發生的事情之外,沒什麼是一成不變的 如果非要說有什麼的話,那就自己的底線。盡量保持善良,盡量正直誠實 盡量通過正途獲取財富 在別人落魄的時候盡量不嘲諷不上去踩一腳,能拉一把拉一把人生那麼長,總有一些事情的發生與我們的本心相悖,總要做出一些妥協盡量避...
能用Rust的方式寫C 程式嗎?
chunquedong 可以。把所有用指標的地方都改為unique ptr就行了,unique ptr相當於Rust中的所有權機制。但是其他rust的編譯時安全檢查的功能做不到。 這個我還真動手做了,https 先要實現rust標準庫。rust裡面的trait可以讓程式設計變得很簡單,比如ops,c...