實驗報告 高軟實驗3

2021-08-08 22:43:25 字數 2871 閱讀 9083

【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...