計程考古題 其他問答題
=[傳值呼叫&傳址呼叫]=
傳值呼叫(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
推
推140.112.240.165 06/15, , 1F
推140.112.240.165 06/15, 1F
推
推 140.112.26.92 06/15, , 2F
推 140.112.26.92 06/15, 2F
推
推 61.224.98.227 06/15, , 3F
推 61.224.98.227 06/15, 3F
推
推140.112.249.161 06/15, , 4F
推140.112.249.161 06/15, 4F