C語言雜記 0x04

2021-08-21 11:20:43 字數 1033 閱讀 3472

函式的返回值可以理解為:定義乙個和返回值型別相同的變數,並且用return後面的語句進行初始化

函式分返回值不是左值,或者說函式表示式不能作為左值,因此下面的表示式是違法的

is_even(20) = 1;

遞迴能解決的問題迴圈也能解決,只是解決的思路不一樣

對於遞迴來說,分配和釋放了好多位址空間,所有變數都是在初始化的時候被賦值,然後就沒再發生過改變,

對於迴圈來說,一直都是乙個變數n和乙個變數result在發生變化,這兩種思路,前一種被稱作函式式程式設計(function programming),

而後一種思路成為命令式程式設計(imperative programming)

兩者的區別類似於declarative和imperative的區別,impreative描述的是一步一步怎麼做,declarative描述的是應該做什麼,

比如sql語言就是典型的declarative,而我們的c語言就是imprative

接下來說一下function programming

函式式程式設計的「函式」類似於數學函式的概念,數學函式是沒有side effect的,而c語言的函式是存在side effect的,

side effect是指「***」,比如printf函式,我們並不需要他給我們返回什麼,而是需要他的「控制台列印」功能(更加具體的細節感興趣可以去了解一下)

很多語言是避免side effect的,例如lisp、haskell、erlang等

i++   返回i然後 i=i+1

i-- 返回i然後 i=i-1le

++ii=i+1 然後返回i

--ii=i-1 然後返回i

這四個表示式入過都看成函式的話則都存在side effect,返回的是i,side effect是i發生了變化

goto語句過於強大了,從程式中的任何地方都可以無條件跳轉到任何其它地方,只要在那個地方定義乙個標號就行,唯一的限制是goto只能跳轉到同乙個函式中的某個標號處,而不能跳到別的函式中。

濫用goto語句會使程式的控制流程非常複雜,可讀性很差

0X04儲存資料

coding utf 8 usr bin python 儲存資料 模組json 讓你能夠將簡單的python資料結構轉儲到檔案中,並在程式再次執行時載入該檔案中的資料。你還可以使用json 在python程式之間分享資料。更重要的是,json資料格式並非python專用的,這讓你能夠將以json格式...

語言雜記 0x0A

今天寫乙個字串反轉練練手,涉及到手動輸入字串時出現了一些問題 char s scanf s s 採用字元陣列的方式輸入的時候完全沒有問題,但是採用下面的方式的時候就會報錯 核心以轉儲 char s scanf s s 什麼是核心已轉儲呢?通俗的理解就是訪問了不能訪問的內容,如下 所以我們的char ...

C語言雜記 0x0B

首先看兩個例子 一 二 這兩個例子裡面不同的地方就是s的不同,c語言程式在執行的時候記憶體分配有這樣的規則 區域性變數在棧中自動生成記憶體,比如上面所說的s就是在棧中生成記憶體 而s 指向的內存在常量區,就類似於我們在所有程式之前宣告char s 100 一樣 棧由編譯器自動生成釋放,而常量區的記憶...