程式的結構

Download Report

Transcript 程式的結構

程式的結構
01010
10101
01010
01010
10101
01010
01010
10101
01010
C程式:註解、標頭檔
/*
由一個以上的函數所組成的,函數的名稱只能宣告一次
* 註解
*/
main,是C程式開始執行的地方
#include <stdio.h>
以/* */括起來的部分,及 // 後面直到行尾的部分是註解
int x;
int main() {
int y; // main裡的y
# 號開頭的部分,是由前置處理器來處理
x = 1;
y=foo(x); // 這裡的y是main裡的y
printf("I have done\n");
#include這個前置處理器命令,把source code file和其後
return 0;
的header file合成為另一個修改過的source code file
}
#include <stdio.h>將系統目錄內的stdio.h檔案插入到
int foo(int z) {
#include的位置上
int y; // foo裡的y
return z;
}
C程式:標頭檔
/*
#include後面的檔名可用 < > 或 “ “ 括起來
* 註解
< >表示系統的引入檔, 會去/usr/include下面找
*/
#include <stdio.h>
“ "表示會在和這個.c一樣的目錄下尋找
int x;
int main() {
int y; // main裡的y
x = 1;
y=foo(x); // 這裡的y是main裡的y
printf("I have done\n");
printf函數存在於系統程式庫內,為了讓Compiler了解printf
return 0;
在別地方定義,要將宣告printf的stdio.h包含進來
}
int foo(int z) {
int y; // foo裡的y
return z;
}
C程式:變數宣告、呼叫函數
宣告全域(global)變數x的型態為int(整數)
/*
* 註解
函數的宣告
傳回值 函數名稱 (參數1,參數2…){
*/
程式碼
#include <stdio.h>
}
int x;
可以存取?
int main() {
main
V
V
X
foo
V
X
V
int y; // main裡的y
x = 1;
y
x
foo()的堆疊
y=foo(x); // 這裡的y是main裡的y
1
printf("I have done\n");
變數宣告
return 0;
型態名稱 變數名稱 ;
1
}
x的值複製到堆疊上,Call foo,然後將
int foo(int z) {
x傳出去
int y; // foo裡的y
y=5;
return z+1;
}
全域(global)變數
• 合法的變數名稱由英文字母、底線開頭,後面加上不定
長的文數字和底線,如 x1 、 _x123…
• 變數宣告要求compiler在記憶體配置容納該型態的空間
• C語言int型態大小在不同的平台上可能不同,32 bits的
機器int一般為4個bytes
• int x是要在記憶體分配空間(程式設計師不用管在哪裡)
,這記憶體在程式就以x這個符號來代表
• 宣告在函數之外的變數,稱為全域變數。
• C語言要求運算指令內所用到的變數必須在該運算指令
前宣告
C程式:函數
/*
* 註解
宣告呼叫foo這個函數時,需要傳入一個int當參數
*/
z是放在稱為stack的某塊記憶體上,z接受呼叫者傳來的值
#include <stdio.h>
int x;
int main() {
堆疊上產生新的變數y,此y和main裡面宣告的y是完全
int y; // main裡的y
不同的變數
y
x
x = 1;
foo()的堆疊
y=foo(x); // 這裡的y是main裡的y
1
2
printf("I have done\n");
5
y
return 0;
將整數z+1的值當做foo函數的傳回值
z
1
}
可以存取?
int foo(int z) {
main
V
V
X
int y; // foo裡的y
foo
V
X
V
y=5;
整數0回傳給呼叫main的函數
return z+1;
}
global variable(全域變數) VS. local variable
(區域變數)
•變數定義在函數的外面(如x),此變數稱為global varia
ble(全域變數)
•全域變數的可見範圍是程式內的所有函數;存在期
間從該程式執行就存在,程式結束該變數才會消失
•變數定義在函數裡面(如y),則此變數稱為local variabl
e(區域變數)或auto variable(自動變數)
•區域變數的可見範圍僅侷限於定義該變數的函數;
存在期間則是開始於該函數被呼叫時,結束於該函數
return時
寫程式時需注意
•程式開頭應加註解,說明用途,建立時間,修改時間
與內容,作者,使用工具
•函數的開頭也應對此函數註解說明
•見到 { 應內縮四個空格,以讓程式容易閱讀
•每一敘述應獨立一行,即看到 ; { 應該換行
程式編輯、預先處理、編譯、連結
程式編輯
預先處理
編譯
目的檔 xxx.o
連結
可執行檔 xxx.exe