看板 ESOE-91 關於我們 聯絡資訊
=[傳值呼叫&傳址呼叫]= 傳值呼叫(Call by value) 在函數之間傳遞參數值 是利用其變數名稱作為傳遞依據 將其變數之值進行複製 給相對應的變數 進一步作運算 故不會影響其原來變數之值 具有變數之隱密性 傳址呼叫(Call by reference) 在函數之間傳遞參數 是利用一指標變數來傳遞該參數之所存記憶體位址 故在運算時是直接對該值作運算 變數隱密性較低 又可以一次傳遞多項參數(陣列) 故傳遞效率較高 =[動態記憶體配置]= 動態記憶體配置(Dynamic Memory Allocation) 利用指標變數 來根據程式需求量 隨時對電腦獲得記憶體 而非於程式一開始 就佔有記憶體 而達到較高的效率之做法 在C語言之中 DMA的基本相關函式有 malloc() calloc() free() EX: 跟系統要一記憶體 包含n個int,n個float,n個double int *pi; float *pf; double *pd; int n; scanf("%d",&n); /* 第一種寫法: */ pi=(int *)malloc(n*2); /* 第二種寫法: */ pf=(float *)calloc(n,4); /* 第三種寫法: */ pd=(double *)calloc(n,sizeof(double)); free(pi);free(pf);free(pd); 其中malloc()跟calloc()是對系統要記憶體的函式 其差別在於malloc不會對 所佔記憶體作先行配置 而calloc會先行配置為0 而free是釋放記憶體的函式 =[變數生命週期 (n & i 的那題)]= 變數i: 變數n: 1.該變數名稱為 i 1.該變數名稱為 n 2.該變數資料型態為 int 2.該變數資料型態為 int 3.該變數所佔記憶體為 2 byte 3.該變數所佔記憶體為 2 byte 4.該變數型態為 auto 4.該變數型態為 extern 5.該變數生命週期在 main() 5.該變數生命週期在 該檔案中 6.該變數儲存於 堆疊(stack) 6.該變數儲存於 記憶體 7.該變數宣告時 未有初始值 7.該變數宣告時 有初始值0 8.該變數之值被定義為 20 =[指標變數]= 指標變數(Pointer variable) 存放指標(記憶體位址)的變數 不同於一般變數乃是存放實體參數 作為間接取值的方式 可以利用 *(取值運算元) 跟 &(取址運算元) 來作宣告 定義 運算 EX: int *pi; //宣告pi為一指向int資料型態之指位器 int i; i=5; pi=&i; //將i之位址定義存給pi 指標常數就是相反 為一位址之值 =[函數原型宣告]= 回傳值型態 函數名稱(傳入參數型態,...); =[變數屬性]= 痾 很多 待會po 我要去WC -- ※ 發信站: 批踢踢實業坊(ptt.csie.ntu.edu.tw) ◆ From: 140.112.26.92
Allenguy:推最後一句 推140.112.240.165 06/15
shmm:人有3急 推 140.112.26.92 06/15
lovelymephy:謝拉阿海 拜託^^ 推 61.224.98.227 06/15
Petrucci99:一樓的 你已為每個人都愛打魔獸嗎... 推140.112.249.161 06/15