编程范式,14/11/18

1 channeling

int main()
{
DeclareAndInitialArray();
printfArray();
}
void DeclareAndInitialArray()
{
int array[100];
int i;
for (i =0; i<100;i++)
{
	array[i] =i ;
}
}
void  printfArray()
{
	int array[100];
    int i;
	for(i=0;i<100;i++)
  {
	printf("%d\n", array[i]);
   }
}

以上程序运行输出0-99;因为两个函数在栈中的内存信息完成相同,调用完之后原来的向下栈区空间并没有更新,信息依然存在。
channeling :代码不是顺序执行,每个硬件中断都有执行-利用一小段代码提前准备好信息,下次就知道相应的栈信息中进行操作。以上是利用C中的内存分布进行的操作。这里也提醒了你命名一个局部变量,未进行初始化的后果会出现一些隐藏的bug。
2 printf函数原型

int printf(const char* control, ...);
printf("hello\n");
printf("%d + %d = %d\n", 4 ,4, 8);
如何实现参数的缺省动态。
函数参数从右到左入栈,最顶端的是第一个控制参数。利用第一个控制参数的信息,向上寻址,找到相应参数的预留的内存空间。
但是如果反过来入栈实现起来就比较麻烦。

3 如何让两个不同程序在同一个处理器中同时运行。
每一个应用程序代表一段虚拟内存,里边有栈区, 代码段,以及堆区。每一个虚拟内存映射到物理内存中的一小段中,通过相应的内存管理器实现进行。
同一段进程中如何运行两个函数:通过共享堆区与代码段,而栈区分出子栈区

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值