作者shmm (有要念书找找我)
看板ESOE-91
标题计程考古题 其他问答题
时间Sun Jun 15 22:36:49 2003
=[传值呼叫&传址呼叫]=
传值呼叫(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
1F:→ Allenguy:推最後一句 推140.112.240.165 06/15
2F:→ shmm:人有3急 推 140.112.26.92 06/15
3F:→ lovelymephy:谢拉阿海 拜托^^ 推 61.224.98.227 06/15
4F:→ Petrucci99:一楼的 你已为每个人都爱打魔兽吗... 推140.112.249.161 06/15