[筆記]C語言大學實用教程讀後感及 位段介紹

來源:互聯網
上載者:User

  書目詳情請見:C語言大學實用教程/21世紀大學電腦系列教材

1、運算子的結合性概念是什麼?
  m = -n++;  // 當n=3時,m=_?_ ;  自己去實際驗證吧!

2、測試程式只能證明程式有錯,而不能證明程式無錯。
  當專案經理問程式猿“bug什麼時候能修完?”的時候,程式猿應該緊緊抱住專案經理說:“我真沒用,竟然讓你問這樣的問題!” ——這就是真理

3、增量測試
  又叫“探勘測試” ?

  測試人員建立測試的效率常常受到以往測試結果的影響。這種方法稱為探勘測試法(Exploratory Testing),是確定如何測試的第一步。
  探索應用程式以及熟悉應用程式的功能是學習過程中的一個必要的步驟。測試人員在開始任何測試前必須熟悉應用程式。這種探索可以採取多種形式:
  1.學習已有的測試指南或培訓教材;
  2.閱讀任何已有的終端使用者或工程文檔;
  3.請專業人員示範應用程式;
  4.輸入隨機資料和命令;
  5.執行所有操作選項;
  6.以好奇心和求知慾嘗試程式的運行狀態。
  在探索的過程中,測試人員通過觀察程式的行為來觀察程式如何工作,感覺什麼樣的輸入是好的 ,什麼樣的輸入是不好的。當應用程式的顯示結果與測試人員預期的結果不同時,則有可能存在潛在的問題。
  探索的目的在於通過對應用程式功能的操作更多地瞭解應用程式。這隻是探勘測試法的一個方面。只要你在執行當前的測試時是基於觀察來建立新的測試,那麼你就是在使用探勘測試法。
  探索的另一個重要任務是找到瞭解應用程式並有權澄清需求的人。

  非增量測試

4、assert  標頭檔<assert.h>  這個不錯,以後編碼是自訂函數必定靠此檢查參數有效性,並且必定判斷函數傳回值.

5、標頭檔裡對全域變數的聲明需加上extern關鍵字。

6、二維數組及以上傳遞是必告之,如[][X][X]...

7、字元裡一維數組中最後一個元素是'\0'才構成字串。

8、單項值傳遞  →即實參傳遞給形參

9、行指標、列指標  想想就能明白,藉助矩陣來思考更簡單。只是之前沒有注意

10、返回結構體

11、位段  這個有意思,比較節約記憶體,見下文

  以前曾介紹過對記憶體中資訊的存取一般以位元組為單位。實際上,有時儲存一個資訊不必用一個或多個位元組,例如,“真”或“假”用0或1表示,只需1位即可。在電腦用於過程式控制制、參數檢測或資料通訊領域時,控制資訊往往只佔一個位元組中的一個或幾個二進位,常常在一個位元組中放幾個資訊。那麼,怎樣向一個位元組中的一個或幾個二進位賦值和改變它的值呢?
  C語言允許在一個結構體中以位為單位來指定其成員所佔記憶體長度,這種以位為單位的成員稱為“位段”或稱“位域” ( bit field) 。利用位段能夠用較少 的位元儲存資料。  例如:  struct packed-data   {unsigned a:2;unsigned b:6;unsigned c:4;unsigned d:4;int i;}data;  其中a、b、c、d分別佔2位、6位、4位、4位。i為整型。共佔4個位元組。 也可以使各個位段不恰好佔滿一個位元組。  如:    struct packed-data     {unsigned a:2;unsigned b:3;unsigned c:4;int i;};  struct packed-data data;  其中a、b、c共佔9位,佔1個位元組多,不到2個位元組。它的後面為int型,佔2個位元組。在a、b、c之後7位空間閑置不用,i從另一位元組開頭起存放。注意,在儲存單元中位段的空間分配方向,因機器而異。在微機使用的C系統中,一般是由右到左進行分配的。但使用者可以不必過問這種細節。對位段中的資料引用的方法。如:data.a=2;data.b=7;data.c=9;  注意位段允許的最大值範圍。  如果寫data.a=8;就錯了。因為data.a只佔2位,最大值為3。在此情況下,自動取賦予它的數的低位。例如,8的位元形式為1000,而data.a只有2位,取1000的低2位,故data.a得值0。  關於位段的定義和引用,有幾點要說明:  (1) 位段成員的類型必須指定為unsigned或int類型。  (2) 若某一位段要從另一個字開始存放。可以用以下形式定義:    unsigned a:1; unsigned b:2; (一個儲存單元)
    unsigned:0; unsigned c:3;  (另一儲存單元) 
  本來a、b、c應連續存放在一個儲存單元(字)中,由於用了長度為0的位段,其作用是使下一個位段從下一個儲存單元開始存放。因此,現在只將a、b儲存在一個儲存單元中,c另存放在下一個單元。(上述“儲存單元”可能是一個位元組,可能是29位元組,視不同的編譯系統而異。)  (3) 一個位段必須儲存在同一儲存單元中,不能跨兩個單元。如果第一個單元空間不能容納下一個位段,則該空間不用,而從下一個單元起存放該位段。  (4) 可以定義無名欄位。如:    unsigned a:1; unsigned :2;(這兩位空間不用) unsigned b:3; unsigned c:4;  在a後面的是無名位段,該空間不用。  (5) 位段的長度不能大於儲存單元的長度,也不能定義位段數組。  (6) 位段可以用整型格式符輸出。如:printf("%d,%d,%d",data.a,data.b,data.c); 當然,也可以用%u、%o、%x等格式符輸出。  (7) 位段可以在數值運算式中引用,它會被系統自動地轉換成整型數。如:data.a+5/data.b是合法的。 【參考資料 感謝作者】
1、增量測試法——探勘測試
2、非增量式測試
3、位段

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.