關於DEVc++使用技巧和C語言中的一些疑問

  自己對C不太瞭解,導致寫程序的時候遇到很多問題,對於熟悉C的人來說,這可能不值一提。但是爲了自己能有能夠更好地理解,還是做下筆記。

一、關於DEVc++使用技巧

頭文件引入:

  1. #include <iostream>
    #include是標準的C++頭文件,任何符合標準的C++開發環境都有這個頭文件。
    作爲iostream(.h)庫的一部分,頭文件<iostream(.h)>聲明瞭一些用來在標準輸入輸出設備上進行輸入輸出操作的對象。
  2. using namespace std;
    在舊的標準C++中,使用#include<iostream.h>,但在新標準中,用#include,而且在VC中編程的同時要注意要添加命名空間(std):using namespace std;
    頭文件包含了以下對象:

窄字符(char)

  • cin:標準輸入流
  • cout:標準輸出流
  • cerr:錯誤的標準輸出流
  • clog:用於記錄的標準輸出流

寬字符(wchar_t)

  • wcin:標準輸入流(寬)
  • wcout:標準輸出流(寬)
  • wcerr:錯誤的標準輸出流(面向廣角)
  • wclog:用於記錄的標準輸出流(寬)

DEVc++的坑

  DEVc++感覺界面挺好看,代碼有不同的高亮,更加清晰明瞭。但是好像錯誤提示有點弱,今天我在寫一個判斷應該寫 == 結果粗心寫成了 = ,但並沒報錯,然後運行的結果一直不對,看了半天才排查出來。哎,可能還是自己菜。不知道VC6.0有沒有這樣的報錯提示。

[Error] ‘:main’ must return "int’

   再devcpp上運行,報錯信息[Error] ‘:main’ must return “int”,查了資料後,網上有人說:
main函數必須返回int類型。這個要求是C99提出的,所以採用C99及以後標準的編譯器,都會強制要求main函數返回int類型。即這樣:

int main()
{
    ...
    return 0;
}

  而現在很多書都不注意規範,用着老編譯器,這種事情毫不在意,寫成main()void main()的屢見不鮮,這個需要個人注意,嚴格按照標準來。

二、C中的定義

  • 問題一:typedef int SElemType; 爲什麼要這樣定義?
    定義不同的數據類型名稱是爲了程序的可讀性。一旦你需要將類型變換比如使用double型的,只要寫:
    typedef double ElemType;如果沒有定義的話就要一個個的把int改成double,這樣操作起來會很麻煩。

  • 問題二:#define STACKINCREMENT 10什麼意思?
    #define是C語言中的一個預處理指令,其中的“#”表示這是一條預處理命令·。表示定義一個常量 STACKINCREMENT,而且一定不要加 分號,要不然程序報錯。其定義的一般形式爲:

    #define 標識符 字符串
    
  • 問題三:typedef相關的是啥?

typedef struct{		//棧結構類型定義(棧頂指針、棧低指針、棧大小)
	SElemType *base;
	SElemType *top;
	int stacksize;
}SqStack;

  typedef是類型定義的意思。typedef struct 是爲了使用這個結構體方便。具體區別在於:

若struct node{ }這樣來定義結構體的話。在定義 node 的結構體變量時,需要這樣寫:struct node n;

若用typedef,可以這樣寫:typedef struct node{}NODE; 。在申請變量時就可以這樣寫:NODE n;

其實就相當於 NODE 是node 的別名。區別就在於使用時,是否可以省去struct這個關鍵字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章