(c 小白入)初學時常見的幾個難區分的概念

2021-10-01 15:43:46 字數 989 閱讀 7241

(1.敘述多分支ifelse if else結構與switch結構的用法,並比較二者的異同。2.比較用位址(陣列名)和指標處理陣列資料的特點。3.對比函式的值傳遞和位址傳遞的異同和使用場景。4.簡述全域性變數、 區域性變數和靜態區域性變數。)

(1)同:多分支if else結構與switch結構都可以應對多種條件下對應不同結果的情況。

異:乙個switch語句只能基於乙個變數的值或者乙個表示式來執行語句,而if else可應對不同變數或表示式來執行;但是if else在面對情況較多的情況是需進行多次if else的巢狀,要進行多次邏輯運算,而有時用switch語句可以只進行一次或兩次邏輯運算便能完成,速度更快。

總的來說,if else比switch受用範圍更加寬泛,但是更加複雜,邏輯運算更多。

(2)用位址處理陣列資料時,每處理完乙個資料便會回到首位址對應的資料,當處理下乙個 資料的時候再從首位址過去,而利用指標處理陣列資料時,每處理完乙個資料,指標會停留在這乙個資料,相當於首位址換成了它停留的這個位置,當要處理下乙個資料時便只要移動乙個位置便可。

即利用指標處理大規模的陣列資料時的讀取速度會遠遠快於利用位址處理資料,但是因 為指標處理時相當於首位址發生了變化,所以難以找到之前的資料。

(3)同:都是用於給函式傳輸值。

異:值傳遞時並不會改變原來位址中儲存的值,但是只在傳遞時相當於重新開了乙個空間來儲存它,更安全但需消耗更多空間。位址傳遞時可能會改變原來位址中儲存的值,但是這種方式不需要再開空間而是直接從原來開的空間呼叫,不那麼安全但是節省空間。可以用const解決位址傳遞的安全問題。

使用場景:值傳遞在未使用陣列或資料較少時使用;位址傳遞在使用陣列傳值並且資料較多時使用。

(4)全域性變數:定義在所有函式之外的能在整個函式中都被呼叫的變數,其有預設值且為0。

區域性變數:只能在其作用域內呼叫,出了它的大括號就不能被呼叫,並且當乙個函式結束執行後,所有區域性變數都會被自動銷毀。

靜態區域性變數:只能在其作用域內呼叫,出了它的大括號就不能被呼叫,但在程式的整個生命週期中,其會一直存在於記憶體中。

C 初學者對Equals方法的幾個常見誤解

很多c 的教材都會強調物件相等的概念。我們都知道,在c 的世界裡存在兩種等同性。一種是邏輯等同性 如果兩個物件在邏輯上代表同樣的值,則稱他們具有邏輯等同性。另一種是引用等同性 如果兩個引用指向同乙個物件例項,則稱他們具有引用等同性。眾所周知,object型別有乙個名為equals的例項方法可以用來確...

C 初學者對Equals方法的幾個常見誤解

很多c 的教材都會強調物件相等的概念。我們都知道,在c 的世界裡存在兩種等同性。一種是邏輯等同性 如果兩個物件在邏輯上代表同樣的值,則稱他們具有邏輯等同性。另一種是引用等同性 如果兩個引用指向同乙個物件例項,則稱他們具有引用等同性。眾所周知,object型別有乙個名為equals的例項方法可以用來確...

C 初學者對Equals方法的幾個常見誤解

很多c 的教材都會強調物件相等的概念。我們都知道,在c 的世界裡存在兩種等同性。一種是邏輯等同性 如果兩個物件在邏輯上代表同樣的值,則稱他們具有邏輯等同性。另一種是引用等同性 如果兩個引用指向同乙個物件例項,則稱他們具有引用等同性。眾所周知,object型別有乙個名為equals的例項方法可以用來確...