【jerryykt1464929958440 + 《軟體工程(c編碼實踐篇)》mooc課程作業 】
【我學到了】:
1、在編碼過程中,遇到了問題:指標變數的大小如何確定的問題。
記得以前用vc++6.0寫c語言的時候,指標的sizeof()大小是4(位元組),而現在用64位linux中使用gcc編譯的c程式的指標大小是8個位元組,於是去查詢了一下,結論如下:64位機器字長的機器,記憶體定址位數一般也是64位(儘管記憶體定址位數和機器字長不是乙個概念,機器字長指cpu同時能夠處理的二進位制位數(本機64位),記憶體定址位數如果小於64位,則造成資源浪費,相當於減小了理論上的位址空間,若高於64位,則cpu必須通過超過1次的計算才能完成定址,造成執行緩慢,所以一般機器字長和記憶體定址位數相等)
一篇講的不錯的:
2、複習了c語言中指向函式的指標。
函式指標宣告格式如下:
資料型別 (*指標名)(形參列表) ; ,比如:int (*funcpointer)(int, int);
——形參列表可以省略,比如int (*funcpointer)();和上面的宣告等價,但是返回值型別必須相同,否則不能編譯。
——每個函式的函式名都是指向該函式的入口位址,也就是乙個位址,指向函式的指標。
一篇講的不錯的:
3、static關鍵字。
編碼中遇到了用static修飾的全域性變數陣列,它只在定義它的原始檔內有效,其他檔案中無效
4、標頭檔案的內容、寫法。
標頭檔案開頭有:#ifndef __abc_h__
#define __abc_h__
結尾有:#endif
是為了防止多個原始檔中都新增該標頭檔案時的重定義問題
此外,標頭檔案中還有巨集定義如:#define max_value 100,還有結構體宣告和函式宣告(函式定義一般放在另乙個原始檔)
一篇不錯的:
5、gcc 1.c 2.c就是把1.c和2.c兩個檔案一起編譯
6、進一步學習模組化編碼思想,將程式分為2個原始檔和1個頭檔案,將運算元據結構的**和功能**分開。
【實驗環境】:
ubuntu16.04、git2.0、gcc4.9、codeblocks13.10
【**關鍵】:
**分為3個檔案:cmdv2.1.c、datastruct.c、datastruct.h
1、cmdv2.1.c主要存放主函式以及實現8個命令的函式。
2、datastruct.c存放對鍊錶的操作,因為8個命令的資料使用鍊錶進行儲存的,所以應該單放乙個檔案。
3、datastruct.h主要是提供datastruct.c的介面給主函式
源**如下:
1、cmdv2.1.c
#include#include#include#include"datastruct.h"
void help();
void quit();
void knowaboutauthor();
void saysth();
void talktome();
void gototoilet();
void minus();
void multiply();
static funcnode funclist =
, ,,,
,,,,
};int main()
return 0;
}void help()
void quit()
void knowaboutauthor()
void saysth()
}void talktome()
void gototoilet()
void minus()
void multiply()
2、datastruct.c的**如下:
#include#include#include"datastruct.h"
//the define
void findcmd(funcnode* fn, char* cmd)
fntemp = fntemp->next;
}if(flag == 0)
return;
}void showallcmd(funcnode* fn)
}
3、標頭檔案datastruct.h**如下
#ifndef __datastruct_h__
#define __datastruct_h__
//定義常量
#define cmd_max_len 128
#define desc_len 1024
#define cmd_num 8
// 定義資料結構data struct and its operations
typedef struct funcnode
funcnode;
//函式宣告
void findcmd(funcnode*, char *);
#endif
【實驗流程】:
1、寫**在乙個原始檔中,先理清思路。
2、將**根據不同功能分放在2個原始檔和1個頭檔案中,更加模組化、工程化。
3、上傳到github進行版本控制。
【實驗截圖】:
1、程式編譯執行,從功能上與1.0版本的命令列無異。
2、上傳到github
實驗3實驗報告
遲到的實驗3實驗報告 實驗結論 練習1 先用記事本編輯彙編源程式並儲存 然後進行編譯和鏈結得到可執行檔案 編譯和鏈結時結尾加分號可以跳過一些一般情況下預設的步驟,方便一次性生成目標檔案 執行將line4和line9中暫存器dl的值分別修改為6和8 重新彙編鏈結執行,可以發現執行的結果變成了我們所修改...
實驗報告 《3》
編寫基於物件的程式。資料成員包括長寬高,體積,要求用成員函式實現下面的功能 1 由鍵盤輸入3個長方柱的長 length 寬 width 高 high 2 計算長方柱的體積 volume 和表面積 areas 3 輸入這3個長方柱的體積和表面積。html view plain copy print?i...
Linux實驗報告3
linux實驗報告3 我的作業 2009 11 10 實驗地點 a605 實驗時間 2009 11月10 星期二 一 實驗目的 二 實驗步驟及結果分析 要求 將實驗獲得的結果進行描述,基本內容包括 1.開啟虛擬機器,啟動linux,知道輸入密碼進入linux 文字介面 檢視虛擬機器的ip位址,用if...