重新上本科 再寫main函式

2021-09-30 15:15:15 字數 640 閱讀 2958

現在各種框架能自動生成很多**,不知道做客戶端軟體的程式設計師們,還有多少人需要自己寫main函式。

main函式的一種常見錯誤寫法:

void main () or void main (void)

後乙個還好些,c中函式如果沒有引數的話,最好在宣告函式原型的時候填進去乙個void,明確表示沒有引數。好習慣麼。錯誤在於main函式本身是有返回值的,是int型別的值。原型如下:

int main (void)

當返回值是0的時候表示正常退出;否則返回1,表示出錯。帶引數的main函式是這樣子的:

int main (int argc, char * ar**)

argc表示引數個數;char * ar**表示具體引數——這個我是這麼理解的,char * 表示是乙個指向字串的指標,後面加上 表示是字串指標陣列,就是說ar**是乙個指標陣列,每個指標指向乙個字串。預設的時候,argc的值是1,ar**[0]存放的是程式名字。通常,引數是被這樣解析的:

int main (int argc, char * ar**)

{......

for (int i=1; i

重新上本科 堆排序 上

堆排序很有意思。作為排序演算法來講,它和快速排序都是o nlogn 的時間複雜度,都是就地排序,都是採用遞迴。兩者差不多,既生瑜,何生亮?不過堆是一種很有用的資料結構,通過堆排序演算法,可以學習堆這種資料結構,以後可能用得上。堆排序演算法思路很簡單 第一步,構建乙個堆 第二步,取出堆頂 第三步,如果...

重新上本科 快速排序 下

在我的印象中,絕大多數的教科書講解快速排序的時候,都用嚴蔚敏書中的方法,採用左右兩個迭代指示器,從兩個方向進行遍歷比較。能不能只從乙個方向進行遍歷,遍歷一遍就能完成交換任務呢?演算法導論 提供了一種方法。演算法導論 是從左到右遍歷,設定兩個指示器 從這個角度來說本質上與嚴蔚敏的方法一致 乙個指示器指...

重新上本科 排序 除錯環境

上面列了幾個排序演算法的 這些 都是經過debug,程式驗證過的。我順便也把驗證的環境貼出來吧。很多東西,其實是寫給自己看的。一 隨機數生成程式,生成一定數量的隨機數,用於排序,結果記錄在檔案中。bool generatenum const char sfileout,int icount if i...